检查数组是否具有值

Check if array has value

提问人:Matias 提问时间:8/15/2020 更新时间:8/15/2020 访问量:598

问:

我正在运行这个简单的检查:

select * from mytable
where field_name = any(array['2']::_varchar);

field_name所以它是一个数组_varchar

但我得到这个: 错误:运算符不存在:字符变动[] = 字符变动

我错过了什么?

谢谢!

数组 PostgreSQL

评论

0赞 Mike Organek 8/15/2020
where '2' = any(field_name)

答:

3赞 jjanes 8/15/2020 #1

=ANY将其展开 RHS 并将它们单独与 LHS 进行比较,因此它与 .你不能像这样将数组与标量进行比较。您需要一个不解开参数但将数组相互比较的运算符:field_name = '2'::varchar

field_name @> array['2']::_varchar

field_name && array['2']::_varchar

或者你想把文字保留为标量,然后解开已经是数组的另一端,这样它也变成了一个标量:

'2' =ANY (field_name)