2012-04-24 18 views
8

मैं एक मेज है जो निम्न के जैसा दिखता है मिल गया है से एक से अधिक मान से कोई एक चुनें:एक Postgres क्षेत्र

WORD WEIGHT WORDTYPE 
a  0.3  common 
the  0.3  common 
gray 1.2  colors 
steeple 2  object 

मैं एक ही बार में डेटाबेस से बाहर कई अलग अलग शब्दों के लिए वजन खींचने के लिए की जरूरत है। मैं कर सकता था:

SELECT * FROM word_weight WHERE WORD = 'a' OR WORD = 'steeple' OR WORD='the'; 

लेकिन यह बदसूरत लगता है और क्वेरी उत्पन्न करने के लिए कोड अप्रिय है। मैं आशा करती हूं एक तरह से मैं की तरह (स्यूडोकोड) कुछ कर सकते हैं बनाया जा सकता है:

SELECT * FROM word_weight WHERE WORD = 'a','the'; 

उत्तर

14

आप खंड में की कार्यक्षमता का वर्णन कर रहे हैं।

select * from word_weight where word in ('a', 'steeple', 'the');

+0

धन्यवाद एक टकसाल, मार्क। क्या मैं यह समझ सकता था कि Google के लिए सवाल कैसे वाक्यांशित किया जाए! –

8

आप एक ही पैरामीटर में पूरी सूची गुजरती हैं, सरणी डेटाप्रकार उपयोग करना चाहते हैं:

SELECT * 
FROM word_weight 
WHERE word = ANY('{a,steeple,the}'); -- or ANY('{a,steeple,the}'::TEXT[]) to make explicit array conversion 
+0

एक और उत्कृष्ट जवाब। –

+0

आपके लुकअप शब्दों के स्रोत के आधार पर regexp_split_to_array() फ़ंक्शन का उपयोग यहां किया जा सकता है। या शायद regexp_split_to_table() के परिणामों में शामिल हों। http://www.postgresql.org/docs/9.1/interactive/functions-string.html#FUNCTIONS-STRING-OTHER – kgrittn

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