DuckDB中如何筛选数组包含指定值的行?
解决PostgreSQL数组字段包含指定值的查询问题
要筛选出my_array字段中包含至少一个'My Term'值的行,你可以用以下两种有效方法:
方法1:使用ANY操作符
这是最常用的方式,直接检查目标值是否匹配数组中的任意元素:
SELECT * FROM my_table WHERE 'My Term' = ANY(my_array);
方法2:使用数组包含操作符@>
将目标值转为数组形式,检查字段数组是否包含该单元素数组:
SELECT * FROM my_table WHERE my_array @> ARRAY['My Term']::VARCHAR[];
你之前的语句无效的原因:
SELECT * FROM my_table WHERE my_array='My Term';:将整个数组字段与字符串直接相等比较,只有当数组本身是仅包含'My Term'的单元素数组时才会匹配,不符合需求。SELECT * FROM my_table WHERE 'My Term' IN my_array;:语法错误,IN关键字后需要括号包裹的集合(比如子查询结果或明确列举的值),不能直接跟数组类型字段。
内容的提问来源于stack exchange,提问作者Jason Norwood-Young
相关产品推荐
相关产品推荐

