【问题标题】:Select all rows where array contains values from a given list in Postgres从 Postgres 中的给定列表中选择数组包含值的所有行
【发布时间】:2018-07-08 01:21:48
【问题描述】:

我有一个包含整数数组列的表。我想从给定列表中选择包含至少一个 int 值的所有行。

例如

SELECT * FROM table where (111) = ANY (columarray)

返回 columnarray 包含 111 的所有行。

现在我想选择 columnarray 包含 111 或/和 222 的所有行。类似

SELECT * FROM table where (111,222) = ANY (columnarray)

那行不通。它返回一个错误

错误:错误:运算符不存在:记录 = 整数 提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。 职位:45 SQL 状态:42883 错误代码:0

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    可以使用数组重叠操作符:

    SELECT *
    FROM table 
    WHERE ARRAY[111, 222] && columnarray;
    

    【讨论】:

    • 您知道如何使用 JPA 参数化 ARRAY 值吗?我尝试使用 NativeQuery。 ARRAY:values 和 setParameter('values', valuesArray) 不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 2021-11-21
    • 2021-09-15
    相关资源
    最近更新 更多