【问题标题】:How to make a select with array contains value clause in psql如何在psql中使用包含值子句的数组进行选择
【发布时间】:2013-05-17 10:02:13
【问题描述】:

我有 arr 列,其类型为 array

我需要获取行,其中arr 列包含值s

这个查询:

SELECT * FROM table WHERE arr @> ARRAY['s']

给出错误:

错误:运算符不存在:字符变化[]@>文本[]

为什么它不起作用?

附言我知道any() 运算符,但为什么@> 不起作用?

【问题讨论】:

    标签: postgresql postgresql-9.2


    【解决方案1】:

    试试

    SELECT * FROM table WHERE arr @> ARRAY['s']::varchar[]
    
    【解决方案2】:

    请注意,这也可能有效:

    SELECT * FROM table WHERE s=ANY(array)
    

    【讨论】:

    • 这也使我不必像s @> ARRAY['constant'::varchar]那样转换为varchar,更短。
    • 这不会使用 GIN 索引,所以我会使用它。如果我错了,请纠正我
    【解决方案3】:
    SELECT * FROM table WHERE arr && '{s}'::text[];
    

    比较两个数组的包容性。

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 2012-02-11
      相关资源
      最近更新 更多