我有一张表格:
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%'
如果不希望区分大小写,请在比较前转换两个字符串,例如使用
LOWER
或UPPER
(请参见documentation):SELECT * FROM items WHERE LOWER(body::TEXT) LIKE LOWER('%CHILD%')
编辑:正如Dan在评论中所建议的,
ILIKE
是处理不区分大小写查询的另一种优雅方式:SELECT * FROM items WHERE body::TEXT ILIKE '%CHILD%'