Postgresql 将SQLXML编码转换为SQLJSON编码

Postgresql Convert SQL XML Coding to SQL JSON Coding

如何将XMLSQL编码转换为JSONSQL编码。 示例:

SELECT XMLELEMENT(NAME "ORDER", XMLFOREST(PURCHASE_ORDER AS OD_NO)) AS "XMLELEMENT" FROM 
TBL_SALES

现在如何将此 XMLELEMENT & XMLFOREST 转换为 JSON 函数。请帮我。我们在 JSON 函数中有等效的 XMLELEMENT/XMLFOREST 吗?

xml:

<order><OD_NO>4524286167</OD_NO><order_date>2020-06-15</order_date><sales_office>CH</sales_office></order> 

json:

{ "OD_NO": "4524286167", "order_date": "2020-06-15", "sales_office": "CH" }

这里 row_to_json 会做这件事。

您可以像下面这样写您的查询:

select row_to_json(x) from 
(select purchase_order "OD_NO", order_date, sales_office from  tbl_sales ) x

如果您想将所有结果汇总到一个 JSON 数组中,请使用 JSON_AGGrow_to_json:

select json_agg(row_to_json(x)) from 
(select purchase_order "OD_NO", order_date, sales_office from  tbl_sales ) x

DEMO

这些 Postgresql functions
json_build_object(VARIADIC "any")
jsonb_build_object(VARIADIC "any")
在语义上接近于 XMLELEMENT,并且对于您可能需要的任何复杂 JSON 的“刺绣”非常方便。您的查询可能如下所示:

select json_build_object
(
  'OD_NO', order_number, -- or whatever the name of the column is
  'order_date', order_date,
  'sales_office', sales_office
) as json_order
from tbl_sales;

不过我认为没有 XMLFOREST 等价物。