我正在尋找將表結果轉換為 JSON 路徑的解決方案。
我有一個包含兩列的表格,如下所示。第 1 列將始終具有正常值,但第 2 列將具有高達 15 的值,由 ';' 分隔 (分號)。
ID Column1 Column2
--------------------------------------
1 T1 Re;BoRe;Va
我想將上面的列資料轉換為下面的 JSON 格式
{
"services":
[
{ "service": "T1"}
],
"additional_services":
[
{ "service": "Re" },
{ "service": "BoRe" },
{ "service": "Va" }
]
}
我嘗試創建類似下面的內容,但無法獲得我正在尋找的確切格式
SELECT
REPLACE((SELECT d.Column1 AS services, d.column2 AS additional_services
FROM Table1 w (nolock)
INNER JOIN Table2 d (nolock) ON w.Id = d.Id
WHERE ID = 1
FOR JSON PATH), '\/', '/')
如果這是我們可以使用 T-SQL 實作的,請告訴我
uj5u.com熱心網友回復:
正如我在評論中提到的,我強烈建議您修復您的設計并規范您的設計。不要在資料庫中存盤分隔資料;Re;BoRe;Va應該是 3 行,而不是 1 行。這并不意味著您無法使用非規范化資料實作您想要的,只是您的設計存在缺陷,因此需要提出。
實作您所追求的一種方法是使用一些嵌套FOR JSON呼叫:
SELECT (SELECT V.Column1 AS service
FOR JSON PATH) AS services,
(SELECT SS.[value] AS service
FROM STRING_SPLIT(V.Column2,';') SS
FOR JSON PATH) AS additional_services
FROM (VALUES(1,'T1','Re;BoRe;Va'))V(ID,Column1,Column2)
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;
這會產生以下 JSON:
{
"services": [
{
"service": "T1"
}
],
"additional_services": [
{
"service": "Re"
},
{
"service": "BoRe"
},
{
"service": "Va"
}
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454754.html
標籤:sql服务器 tsql sql-server-2017
