相关疑难解决方法(0)

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

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

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

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

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

postgresql jsonb

5
推荐指数
1
解决办法
2105
查看次数

在PostgreSQL中使用json数组中的索引

参考原始的stackoverflow问题,我试图将金币索引应用于Postgres 9.4中数组对象中的键,但我没有得到第一个答案中所述的结果.

你能否解决这个错误?

我遵循的步骤如下.

第1部分:创建表和索引

CREATE TABLE tracks (id serial, artists jsonb);
CREATE INDEX tracks_artists_gin_idx ON tracks USING gin (artists);
INSERT INTO tracks (id, artists) VALUES (1, '[{"name": "blink-182"}]');
INSERT INTO tracks (id, artists) VALUES (2, '[{"name": "The Dirty Heads"}, {"name": "Louis Richards"}]');
Run Code Online (Sandbox Code Playgroud)

第2部分:查询

SELECT * FROM tracks WHERE artists @> '{"name": "The Dirty Heads"}';
 id | artists 
----+---------
(0 rows)
Run Code Online (Sandbox Code Playgroud)

此查询提供空结果.
我也尝试使用jsonb_path_opsGIN索引.

替代索引和查询:

DROP INDEX tracks_artists_gin_idx;
CREATE INDEX tracks_artistnames_gin_idx ON tracks USING  gin (artists jsonb_path_ops); …
Run Code Online (Sandbox Code Playgroud)

sql arrays postgresql indexing jsonb

4
推荐指数
1
解决办法
3136
查看次数

标签 统计

jsonb ×2

postgresql ×2

arrays ×1

indexing ×1

sql ×1