2012-04-24 7 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()の結果にJOINすることもできます。 http://www.postgresql.org/docs/9.1/interactive/functions-string.html#FUNCTIONS-STRING-OTHER – kgrittn

関連する問題