postgresql 在row_to_json函数中选择查询

goucqfw6  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(3)|浏览(134)

例如,我使用以下函数将rows转换为json中的PostgreSQL 9.2

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等。
  • 我如何获得实际的字段名或转换字段名?
kpbwa7wx

kpbwa7wx1#

要解决这个问题,我们必须创建一个行类型并将行转换为该类型,或者使用子查询。子查询通常更容易。

select row_to_json(t)
from (
   select productid, product from gtab04
) t

字符串

wmvff8tz

wmvff8tz2#

如果想要防止子查询,json_build_object()可能是一个解决方案。它不Map列名,但让我们显式地设置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

bwitn5fc

bwitn5fc3#

只需从查询中删除row()即可。

select row_to_json(productid, product) from gtab04;

字符串
这将确保行列名得到维护。

相关问题