gpt4 book ai didi

json - PostgreSQL:带有选定列的 row_to_json

转载 作者:行者123 更新时间:2023-11-29 12:42:54 24 4
gpt4 key购买 nike

<分区>

任务概念和我的问题

使用 Postgres 9.4。我如何将 row_to_json(row) 与选择性列(而不是整行)一起使用?在构建 JSON 时,我需要从行构造函数中丢弃一列,但还需要保留列名。

限制

  1. 不要使用自连接到具有选择性列选择的同一个表/cte
  2. 之后不要使用外部函数来处理从 json 中删除 key

我很清楚我可以编写并使用我自己的函数从 JSON 中删除一个键,或者在 Postgres 9.5 中有用于 JSONB 的 - 运算符。但是,我想在没有额外函数调用的情况下预先执行此操作,我很确定这是可能的。

MVCE及解释

生成示例数据

CREATE TABLE test_table ( id int, col1 int, col2 int, col3 text );
INSERT INTO test_table VALUES
(1, 23, 15, 'Jessica'), (2, 43, 84, 'Thomas');

1) 首先尝试,简单的 row_to_json(row),这显然是行不通的:

SELECT id, row_to_json(t) FROM test_table t

我需要从行构造函数中丢弃 id 列,以便在将行解析为 json 时不添加它。以上返回:

 id |                  row_to_json
----+-----------------------------------------------
1 | {"id":1,"col1":23,"col2":15,"col3":"Jessica"}
2 | {"id":2,"col1":43,"col2":84,"col3":"Thomas"}

2) 第二次尝试,显式传递列row_to_json(row(col1, ...)):

SELECT id, row_to_json(row(col1, col2, col3)) FROM test_table t

但是我丢失了列名(如文档中所述,它全部转换为 fX,其中 X 是一个数字:

 id |           row_to_json
----+----------------------------------
1 | {"f1":23,"f2":15,"f3":"Jessica"}
2 | {"f1":43,"f2":84,"f3":"Thomas"}

预期输出

预期输出显然来自 MVCE 中的 (1) 点,但没有 id 键值对:

 id |                  row_to_json
----+-----------------------------------------------
1 | {"col1":23,"col2":15,"col3":"Jessica"}
2 | {"col1":43,"col2":84,"col3":"Thomas"}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com