小编Isa*_*c N的帖子

PostgreSQL jsonb_path_query 删除结果而不是返回空值

在示例表中:

CREATE TABLE example (
    id   SERIAL PRIMARY KEY,
    data JSON NOT NULL );
INSERT INTO example (id, data) VALUES
  (1, '[{"key": "1", "value": "val1"}, {"key": "2", "value": "val2"}]')
, (2, '[{"key": "1", "value": "val1"}]')
, (3, '[{"key": "1", "value": "val1"}, {"key": "2", "value": "val2"}]');
Run Code Online (Sandbox Code Playgroud)

我想查询数据列中 key = 2 的值字段。我当前使用的查询是这样的:

SELECT id,
       jsonb_path_query(
               TO_JSONB(data),
               '$[*] ? (@.key == "2").value'::JSONPATH
           )::VARCHAR AS values
FROM example
Run Code Online (Sandbox Code Playgroud)

我期望结果是:

ID 价值观
1 “值2”
2 无效的
3 “值2”

但实际结果是:

ID 价值观
1 “值2”
3 “值2” …

sql postgresql jsonpath set-returning-functions jsonb

5
推荐指数
2
解决办法
1283
查看次数