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

PostgreSQL JSONB查询:用jsonb_path_exists匹配不同类型值

解决PostgreSQL JSONB非字符串元素的正则匹配问题

你可以通过类型转换将JSONB中的非字符串值转为文本后再进行正则匹配,PostgreSQL的JSON路径表达式支持用::text实现这种转换,替代你设想的@.toString()写法。

修改后的测试语句

把原测试语句里的@改为@::text,就能匹配整数类型的344了:

SELECT jsonb_path_exists('{"data": {"foo1": 344, "foo2": "Tata"}}', '$.data.** ? (@::text like_regex "(?i)344.*")');

执行这条语句会返回true,符合预期。

适配你的业务查询

针对你的mytable查询,只需要把JSON路径里的@替换为@::text即可,修改后的SQL如下:

SELECT id FROM mytable WHERE jsonb_path_exists(properties, '$.data.** ? (@::text like_regex "(?i)Foo.*")');

这样不管properties里的元素是字符串、整数还是其他可转为文本的JSON类型,都会被转为文本后参与正则匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 23:30:54