You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何查询包含指定枚举值的数组字段?

如何查询PostgreSQL枚举数组中包含指定元素的行?

你当前的查询用=做精确数组匹配,只会返回genres完全等于['Adventure']的行,这就是为什么只有《Exiled Prince》被返回。要筛选出genres数组中包含'Adventure'的所有行,可以用以下两种常用方法:

方法1:使用ANY操作符

ANY操作符会检查目标数组中是否存在与指定值相等的元素,适合单个元素的匹配场景:

SELECT * FROM books
WHERE 'Adventure'::book_genres_enum = ANY(genres);

注意需要将字符串'Adventure'显式转换为对应的枚举类型book_genres_enum,避免类型不匹配错误。

方法2:使用数组包含操作符@>

PostgreSQL的数组包含操作符@>可以判断左侧数组是否包含右侧的数组元素,如果你需要同时匹配多个元素,这种方法扩展性更强:

SELECT * FROM books
WHERE genres @> ARRAY['Adventure']::book_genres_enum[];

这里右侧是仅包含'Adventure'的枚举数组,只要genres数组里存在这个元素,就会被匹配到。

内容的提问来源于stack exchange,提问作者Gashio Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:45:56