我的列arr
类型为array
。
我需要获取行,其中arr
列包含值s
此查询:
SELECT * FROM table WHERE arr @> ARRAY['s']
给出错误:
错误:运算符不存在:字符变化[] @>文本[]
为什么不起作用?
P.S。我知道any()
运算符,但为什么@>
不起作用?
答案 0 :(得分:89)
尝试
SELECT * FROM table WHERE arr @> ARRAY['s']::varchar[]
答案 1 :(得分:41)
请注意,这也可能有效:
SELECT * FROM table WHERE s=ANY(array)
答案 2 :(得分:13)
SELECT * FROM table WHERE arr && '{s}'::text[];
将两个数组进行比较以进行遏制。