我将一个字符串作为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' ....)。有没有更好的方法来实现这个目标?
答案 0 :(得分:1)
您可以使用string_to_array
函数将字符串拆分为数组,然后使用any
函数检查您的元素是否包含在其中:
SELECT *
FROM mytable
WHERE name = ANY(STRING_TO_ARRAY(param, ','));