【发布时间】:2021-03-12 17:41:21
【问题描述】:
我在 postgres 中有一个表,其中包含一个包含字符串数组的 value 列。我的目标是找到包含以下任何字符串的所有数组:{'cat', 'dog'}
id value
1 {'dog', 'cat', 'fish'}
2 {'elephant', 'mouse'}
3 {'lizard', 'dog', 'parrot'}
4 {'bear', 'bird', 'cat'}
以下查询使用ANY() 来检查“dog”是否等于每个数组中的任何项,并将正确返回第 1 行和第 3 行:
select * from mytable where 'dog'=ANY(value);
我正在尝试找到一种方法来搜索 value 以查找字符串数组中的任何匹配项。例如:
select * from mytable where ANY({'dog', 'cat'})=ANY(value);
应该返回第 1、3 和 4 行。但是,上面的代码会引发错误。有没有办法在这个等式的左边使用 ANY() 子句?如果没有,检查数组中的任何字符串是否在value 中的解决方法是什么?
【问题讨论】:
标签: sql arrays postgresql operators array-comparison