【发布时间】:2013-05-17 10:02:13
【问题描述】:
我有 arr 列,其类型为 array。
我需要获取行,其中arr 列包含值s
这个查询:
SELECT * FROM table WHERE arr @> ARRAY['s']
给出错误:
错误:运算符不存在:字符变化[]@>文本[]
为什么它不起作用?
附言我知道any() 运算符,但为什么@> 不起作用?
【问题讨论】:
我有 arr 列,其类型为 array。
我需要获取行,其中arr 列包含值s
这个查询:
SELECT * FROM table WHERE arr @> ARRAY['s']
给出错误:
错误:运算符不存在:字符变化[]@>文本[]
为什么它不起作用?
附言我知道any() 运算符,但为什么@> 不起作用?
【问题讨论】:
试试
SELECT * FROM table WHERE arr @> ARRAY['s']::varchar[]
请注意,这也可能有效:
SELECT * FROM table WHERE s=ANY(array)
【讨论】:
s @> ARRAY['constant'::varchar]那样转换为varchar,更短。
SELECT * FROM table WHERE arr && '{s}'::text[];
比较两个数组的包容性。
【讨论】: