【发布时间】:2017-09-29 17:51:58
【问题描述】:
表架构:
create table test_table
(
id serial not null,
data jsonb
);
样本数据:
INSERT INTO public.test_table (id, data) VALUES (1, '[{"": "VALUE1", "KEY2": "VALUE2"}, {"KEY1": "VALUE3", "KEY3": "VALUE4"}]');
INSERT INTO public.test_table (id, data) VALUES (2, '[{"''KEY1 ''": "VALUE1", "KEY2": "VALUE2"}, {"KEY3": "VALUE3", "KEY4": "VALUE4"}]');
SQL 查询:
SELECT id, arr_elem
FROM test_table AS tt, jsonb_array_elements(
(
SELECT data
FROM test_table
WHERE id = tt.id
)
) AS arr_elem
WHERE arr_elem#>'{KEY1}' IS NOT NULL
我想调整上述查询以匹配以下场景:
- 查找具有空字符串的键:例如:
"": "VALUE1" - 查找仅包含单引号的键:例如:
"''": "VALUE1" - 查找尾随空格用单引号括起来的键:例如:
"'KEY1 '": "VALUE1"
试图转义引号和空格,但查询未返回预期结果。
更新 1:
解决方案 1: http://sqlfiddle.com/#!17/6d431/20
SELECT id, arr_elem
FROM test_table AS tt, jsonb_array_elements(
(
SELECT data
FROM test_table
WHERE id = tt.id
)
) AS arr_elem
WHERE arr_elem->'' IS NOT NULL
【问题讨论】:
标签: postgresql postgresql-json