在 postgres 中搜索嵌套的 jsonb 列时,我们可以像这样进行全文搜索:
SELECT * FROM search_test u
WHERE items @? '$.** ? (@ like_regex "35" flag "i")';
这将返回表中所有在 items jsonb 列中具有包含“35”的字符串值的行。
但是我们如何在这个查询中包含数字数据类型呢?例如,如果 items 列具有此值:
{"id": "15351", "nid": 15751 }
我们如何在查询中包含数字数据类型,以便我们从中得到结果:
SELECT * FROM search_test u
WHERE items @? '$.** ? (@ like_regex "75" flag "i")';
试图寻找转换选项,但到目前为止我发现的唯一解决方案是创建一个附加列,其中将数字值存储为字符串,然后搜索这两列。
这是一个示例小提琴: https ://dbfiddle.uk/?rdbms=postgres_13&fiddle=e5929ddbcf69ae3704da932b61a7d153