【问题标题】:How to multi-split a string (WHERE IN query)如何对字符串进行多重拆分(WHERE IN 查询)
【发布时间】:2016-12-27 22:22:14
【问题描述】:

我将一个字符串作为参数(通过 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' ....)。有没有更好的方法来实现这一点?

【问题讨论】:

    标签: sql postgresql split where-in massivejs


    【解决方案1】:

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

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

    【讨论】:

    • 完美运行谢谢!快速跟进:我将如何调整它以处理整数?也就是说,如果表有整数。像 to_number 这样的东西在这里适用吗?
    • @SumanBhattarai 在这种情况下,我会将列转换为字符串,因此您将苹果与苹果进行比较。 AFAIK,Postgres 没有方便的方法将函数应用于数组中的所有元素。
    猜你喜欢
    • 2022-06-29
    • 1970-01-01
    • 2015-03-27
    • 2012-03-11
    • 1970-01-01
    • 2011-08-11
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多