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

PostgreSQL中如何用LIKE子句匹配JSONB字段的文本内容?

解决PostgreSQL jsonb字段LIKE查询无结果的问题

问题根源

当你通过doc['title']获取jsonb类型的字段值再强制转换为text时,结果会保留JSON字符串的双引号包裹。比如存储的title实际值是Personal group,转换后会变成"Personal group",这就导致你的LIKE条件'P%'无法匹配——因为字符串开头是双引号,而非字母P。你用doc['title'] = '"Personal group"'能查到数据,也印证了这一点。

解决方案

方法1:使用->>操作符(推荐)

->>操作符可以直接从jsonb字段中提取不带双引号的文本值,是最简洁高效的方式:

select docid from groups where doc ->> 'title' like 'P%';

方法2:使用jsonb_extract_text函数

和->>效果一致,属于函数形式的写法:

select docid from groups where jsonb_extract_text(doc, 'title') like 'P%';

方法3:去除双引号后匹配(不推荐)

如果一定要保留cast的写法,可以通过trim函数去掉首尾的双引号再匹配:

select docid from groups where trim(both '"' from (doc['title'])::text) like 'P%';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:57:33