postgresql – 使用row_to_json创建JSON时将名称设置为属性

前端之家收集整理的这篇文章主要介绍了postgresql – 使用row_to_json创建JSON时将名称设置为属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当仅对某些列使用row_to_json函数时,是否可以重命名默认的f1,f2,f3 …名称

我可以

row_to_json(客户)

回国

{ “id_customer”:2 “如first_name”: “BLA”,“姓氏”: “second_bla”}

但如果我只想要没有id_customer的名字,我必须使用

row_to_json(row(first_name,last_name))

然后我明白了

{ “F1”: “BLA”,“F2”: “second_bla”}

我希望使用默认列名或我自己的名称来获得此结果.我知道我可以创建自己的复合类型并使用

row_to_json(row(first_name,last_name)):: my_custom_type

但是如果不创建该类型,是不是可以在查询中正确执行?

公用表表达式允许您明确指定别名,不仅适用于CTE,还适用于其列.
WITH data(col1,col2,cola,colb) AS (
  VALUES (1,2,'fred','bob')
)
SELECT row_to_json(data) FROM data;

这与@dezso的例子不同,因为它不对SELECT列表中的每个col使用col AS别名;它将CTE表别名中的列名称别名.

我使用VALUES表达式作为子查询,但你可以随意使用SELECT;关键是,无论在子查询中提供或假设的列别名,都可以通过指定列名列表在CTE定义中覆盖.

您可以在子查询中执行相同的操作,而不是使用AS别名:

SELECT row_to_json(data) 
FROM (VALUES (1,'bob')) data(col1,colb);

这不能直接与ROW表达式一起使用;你只能将ROW转换为具体类型,你不能为它做别名.

regress=> SELECT ROW(1,'bob') AS x(a,b,c,d);
ERROR:  Syntax error at or near "("
LINE 1: SELECT ROW(1,d);

猜你在找的Postgre SQL相关文章