3

我将一个字符串作为参数(通过 massjs)传递到我的查询中。字符串格式为: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' ....) 。有没有更好的方法来实现这一点?

4

1 回答 1

1

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

SELECT * 
FROM   mytable
WHERE  name = ANY(STRING_TO_ARRAY(param, ','));
于 2016-08-21T06:18:52.000 回答