如何在Postgres 9.4 JSONB列中执行不区分大小写的搜索?

G3z*_*G3z 5 postgresql jsonb

我正在使用此查询来查找表中的数据,这profile是一个JSONB列,它可以工作,但只有在名称正是这样的情况下才有效

SELECT * FROM "users" WHERE "profile" @> '{"name":"Super User"}'
Run Code Online (Sandbox Code Playgroud)

是否有可能具有更大的灵活性,如不区分大小写,通配符等?

"Super%"或的东西"super user"

G3z*_*G3z 11

我找到了解决问题的方法:

SELECT * FROM "users" WHERE (profile #>> '{name}') ILIKE 'super %'
Run Code Online (Sandbox Code Playgroud)

我不知道这是否表现得足够好但是有效.
向它添加索引可能是明智之举.

  • 了不起的家伙!这对我来说就像一个魅力!对于同样陷入嵌套对象遍历困境的其他人,只需使用:`profile #>> '{fullname,firstname,...}'`。在这里,您的对象将类似于:“{fullname: {firstname: 'abc'}}” (2认同)