背景:
项目由于多语言的设计,将字段设置成json字段类型,同时存储中文和英文
页面上通过输入框实现模糊的查询
一、表结构:name字段设置jsonb类型
二、表数据
3、Mybatis编写sql
select
pp.name ->>'zh-CN' as pmsProductName,
pp.name ->>'en' as pmsProductNameEN,
ppc.name->>'zh-CN' as pmsProductCategoryName,
ppc.name->>'en' as pmsProductCategoryNameEN from pms_product pp
where 1=1
<if test="null != param.pmsProductName and '' != param.pmsProductName">
and (
pp."name" #>>'{zh-CN}' ilike '%'||#{param.pmsProductName}||'%'
or pp."name" #>>'{en}' ilike '%'||#{param.pmsProductName}||'%'
)
</if>
4、其中pmsProductName是页面传递的值,zh-CN和en分别表示对应的中英文key
按照对应的value实现模糊查询,特别注意一下sql中jsonb value 模糊查询写法是采用 #>> 的写法,不能是正常取值的->>写法,前者可以正常查询出来,后者发现查询不出结果,一定注意!