2016-09-22 9 views
8

मुझे यकीन है कि यह एक डुप्लिकेट सवाल है कि उत्तर कहीं बाहर है, लेकिन मुझे 10 मिनट के लिए गूगलिंग के बाद जवाब नहीं मिला है, इसलिए मैं संपादकों से अपील करता हूं कि वे बंद न करें यह इस आधार पर है कि यह अन्य लोगों के लिए भी उपयोगी हो सकता है।पोस्टग्रेज़: जांचें कि सरणी फ़ील्ड में मूल्य है या नहीं?

मैं पोस्टग्रेस 9.5 का उपयोग कर रहा हूं।

 Column   │   Type   │        Modifiers 
─────────────────────────┼───────────────────────────┼───────────────────────────────────────────────────────────────────────── 
id      │ integer     │ not null default nextval('mytable_id_seq'::regclass) 
pmid     │ character varying(200) │ 
pub_types    │ character varying(2000)[] │ not null 

मैं pub_types में "पत्रिका" के साथ सभी पंक्तियों लगाना चाहते हैं: यह मेरी टेबल है।

मैं डॉक्स पाया और googled और इस मैं क्या कोशिश की है है है:

select * from mytable where ("Journal") IN pub_types; 
select * from mytable where "Journal" IN pub_types; 
select * from mytable where pub_types=ANY("Journal"); 
select * from mytable where pub_types IN ("Journal"); 
select * from mytable where where pub_types contains "Journal"; 

मैं the postgres array docs स्कैन किया है लेकिन कैसे एक क्वेरी चलाने के लिए का एक सरल उदाहरण नहीं देख सकते हैं, और StackOverflow प्रश्न सभी जटिल उदाहरणों के आधार पर प्रतीत होते हैं।

उत्तर

13

यह काम करना चाहिए:

select * from mytable where 'Journal'=ANY(pub_types); 

अर्थात वाक्य रचना <value> = ANY (<array>) है। यह भी ध्यान दें कि postresql में स्ट्रिंग अक्षर को एकल उद्धरण के साथ लिखा गया है।

+0

बहुत बहुत धन्यवाद! – Richard

संबंधित मुद्दे