如何多重拆分字符串(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, ','));
我将一个字符串作为参数(通过 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, ','));