PostgreSQL筛选数组列不包含指定值列表的行
在PostgreSQL中筛选不包含指定值的数组列行
假设你的表名为your_table,示例数据如下:
Id Subjects 1 [English, SST] 2 [Science, Maths] 3 [Hindi, Sanskrit]
要筛选出Subjects列不包含English、Hindi、Sanskrit中任意值的行,可以使用PostgreSQL的数组重叠操作符&&,结合NOT实现:
SELECT id, subjects FROM your_table WHERE NOT subjects && ARRAY['English', 'Hindi', 'Sanskrit']::text[];
说明
&&操作符用于检测两个数组是否存在交集(即有共同元素)。NOT取反后,会保留与指定数组无任何共同元素的行,正好匹配你的需求,运行后会返回Id=2的行。
忽略大小写的场景
如果你的数据存在大小写不一致的情况(比如示例中的Hindi和查询条件里的hindi),可以通过转小写统一匹配:
SELECT id, subjects FROM your_table WHERE NOT lower(subjects::text)::text[] && ARRAY['english', 'hindi', 'sanskrit']::text[];
内容的提问来源于stack exchange,提问作者Arpita
相关产品推荐
相关产品推荐

