检查数组是否有值

时间:2020-08-14 16:50:35

标签: arrays postgresql

我正在运行此简单检查:

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

field_name是_varchar,所以它是一个数组

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

我想念什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

=ANY解开它的RHS并将其分别与LHS进行比较,因此它与field_name = '2'::varchar相同。您无法将数组与标量进行比较。您想要一个不会解开参数而是将数组相互比较的运算符:

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

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

或者您想将文字保留为标量,然后解开已经是数组的另一面,使其也变成标量:

'2' =ANY (field_name)