如何多重拆分字符串(WHERE IN查询)

时间:2016-08-21 06:13:52

标签: sql postgresql split where-in massivejs

我将一个字符串作为param(通过massivejs)传递给我的查询。该字符串的格式为:param = 'red, blue, green'。 param本身没有固定的长度(','是分隔符),因为它是通过用户发送的内容填充的(但最多只有10个元素)。

如何将字符串分解为查询中的单个字符串?

例如我要做的事情:

SELECT * FROM table
WHERE name IN (param);

我知道这有效,但非常粗糙:

SELECT * FROM table
WHERE name IN (split_part(param, ',', 1), split_part(param, ',', 2) .......)) -- keep going. 

基本上我想在IN括号内(' red',' blue',' green' ....)。有没有更好的方法来实现这个目标?

1 个答案:

答案 0 :(得分:1)

您可以使用string_to_array函数将字符串拆分为数组,然后使用any函数检查您的元素是否包含在其中:

SELECT * 
FROM   mytable
WHERE  name = ANY(STRING_TO_ARRAY(param, ','));