Postgresql 从Postgres字段的多个值中选择任意一个

Postgresql 从Postgres字段的多个值中选择任意一个,postgresql,Postgresql,我有一张类似以下的桌子: 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'; 但它感觉很难

我有一张类似以下的桌子:

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';
但它感觉很难看,生成查询的代码令人讨厌。我希望有一种方法可以做到(伪代码):


您正在描述in子句的功能


从单词权重中选择*,其中单词位于('a'、'Stiple'、'the')

如果要在单个参数中传递整个列表,请使用数组数据类型:

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

如果您不确定该值,甚至不确定该字段是空字符串还是空字符串

.where("column_1 ILIKE ANY(ARRAY['','%abc%','%xyz%']) OR column_1 IS NULL")

以上查询将涵盖所有可能性。

谢谢你,马克。如果我能想出如何为谷歌表达这个问题!regexp_split_to_array()函数在这里可能有用,具体取决于查找单词的来源。或者,也可以将regexp\u split\u的结果连接到\u table()。
.where("column_1 ILIKE ANY(ARRAY['','%abc%','%xyz%']) OR column_1 IS NULL")