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

How to multi-split a string (WHERE IN query)

我将一个字符串作为参数(通过 massivejs)传递到我的查询中。该字符串的格式为:param = 'red, blue, green'。参数本身没有固定长度(','是分隔符),因为它是通过用户发送的内容填充的(但最多为 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' ....)。有没有更好的方法来完成这个?

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

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