在 row_to_json 函数中选择查询
Posted
技术标签:
【中文标题】在 row_to_json 函数中选择查询【英文标题】:Select query in row_to_json function 【发布时间】:2014-08-29 08:40:20 【问题描述】:例如,
我使用以下函数将rows
中的json
转换为PostgreSQL 9.2
中的json
select row_to_json(row(productid, product)) from gtab04;
这将返回以下结果
row_to_json
---------------
"f1":3029,"f2":"DIBIZIDE M TAB"
"f1":3026,"f2":"MELMET 1000 SR TAB"
"f1":2715,"f2":"GLUCORED FORTE"
"f1":3377,"f2":"AZINDICA 500 TAB"
不幸的是,它丢失了字段名称并将其替换为 f1、f2、f3 等。
如何获取实际的字段名称或转换字段名称?
【问题讨论】:
【参考方案1】:要解决这个问题,我们必须创建一个行类型并将行强制转换为该类型,或者使用子查询。子查询通常会更容易。
select row_to_json(t)
from (
select productid, product from gtab04
) t
【讨论】:
【参考方案2】:如果想阻止子查询,json_build_object()
可能是一种解决方案。它不映射列名,但让我们明确设置 JSON 键。
查询
SELECT json_build_object('productid', productid, 'product', product) FROM gtab04;
json_build_object
------------------
"productid":3029,"product":"DIBIZIDE M TAB"
"productid":3026,"product":"MELMET 1000 SR TAB"
"productid":2715,"product":"GLUCORED FORTE"
"productid":3377,"product":"AZINDICA 500 TAB"
View on DB Fiddle
【讨论】:
以上是关于在 row_to_json 函数中选择查询的主要内容,如果未能解决你的问题,请参考以下文章
使用 row_to_json 的 Postgres 递归查询
使用自联接在 row_to_json() 中复制 JSON 元素