我有一张表格:

                          Table "public.items"
     Column      |           Type           |         Modifiers
-----------------+--------------------------+---------------------------
 item_id         | character varying        | not null
 content         | character varying        |
 tags            | jsonb                    |
 body            | jsonb                    |

body字段包含如下数据:
[{"text": "As a child home ..."},
{"text": "Great post. Watch this }]

在文本部分按单词查找文档需要什么查询?

最佳答案

有很多复杂的方法可以实现您正在尝试的目标,但我主张采用更简单的方法,例如将此正文列视为文本,并使用普通的like来完成工作:

SELECT * FROM public.items WHERE body::TEXT LIKE '%child%'

或者
SELECT * FROM public.items WHERE body::TEXT SIMILAR TO '%child%'

如果不希望区分大小写,请在比较前转换两个字符串,例如使用LOWERUPPER(请参见documentation):
SELECT * FROM items WHERE LOWER(body::TEXT) LIKE LOWER('%CHILD%')

编辑:正如Dan在评论中所建议的,ILIKE是处理不区分大小写查询的另一种优雅方式:
SELECT * FROM items WHERE body::TEXT ILIKE '%CHILD%'

10-08 12:57