首页 > 解决方案 > PostgreSql 搜索 JSON 并匹配整个术语

问题描述

我有一个使用 JSON 存储的 Postgres 数据库。我有一张相机和镜头表,其中包含一个要搜索的属性,称为 BrandAndModel。相关的 JSON 部分如下所示,并存储在名为“data”的列中:

"BrandAndModel": "nikon nikkor 50mm f/1.4 ai-s"

我有一个针对这个品牌和型号字符串的 LIKE 查询,但它只返回字符序列匹配的结果。例如,上面确实得到了“nikkor 50mm”的结果,但没有得到“nikon 50mm”的结果。

我不是 SQL 专家,我不确定我需要使用什么来匹配更多可能的组合。

我的查询看起来像这样

SELECT * FROM listing where data ->> 'Product' ->> 'BrandAndModel' like '%nikon 50mm%'

我怎样才能让这个查询匹配“nikon 50mm”?

标签: postgresql

解决方案


您可以使用ANY数组进行多重比较。

 LIKE ANY(ARRAY['%nikon%ai-s%', 'nikon%50mm%', '%nikkor%50mm%'])

推荐阅读