我正在圍繞一些(我認為愚蠢的)T-SQL 代碼而頭疼。使用一些 SQL 資料,我正在創建一個 HTTP 請求正文來執行 API 呼叫,我知道 T-SQL/SQL 不是執行這些操作的方法。但是我配置的應用程式沒有選項。
查詢(用“0 = 0”案例等虛構):
DECLARE @body VARCHAR(MAX)
SET @body = (
SELECT TOP 1
CASE WHEN 0 = 0 THEN 'OUTBOUND' ELSE 'INBOUND' END AS direction,
CASE WHEN 0 = 0 THEN CAST('true' AS BIT) ELSE CAST('false' AS BIT) END AS isAlone,
CASE WHEN 0 = 0 THEN
'AB123'
END AS Registration
FROM table
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
)
SELECT @body
這很好地吐出了一個 JSON:
{
"direction": "OUTBOUND",
"isAlone": true,
"Registration": "AB123"
}
到目前為止,一切都很好。但是我正在與之交談的 API 需要以下“注冊”鍵:
{
"direction": "OUTBOUND",
"isAlone": true,
"Registration": [
"AB123"
]
}
所以我需要將“注冊”的值包裝在一個陣列中。
我試圖:
- 執行字串操作 ( '[' )
- @body 內的外部應用
- 子字串(從 JSON 路徑中選擇)
不知何故,我無法弄清楚如何才能使這項作業..你們能把我推向正確的方向嗎?
非常感謝共同!
uj5u.com熱心網友回復:
如果您使用不帶路徑的 JSON_QUERY,它將告訴 SQL 將字串視為 JSON,因此FOR JSON PATH不會影響格式。行為記錄在這里
使用 JSON_QUERY() 本地創建 JSON 陣列列
CREATE TABLE #test (direction Varchar(100),isAlone bit,Registration Varchar(100))
INSERT INTO #test
VALUES ('OUTBOUND',1,'AB123')
DECLARE @body VARCHAR(1000) = (
SELECT direction
,isAlone
,Registration = JSON_QUERY(CONCAT('["',registration,'"]'))
FROM #test
FOR JSON PATH,WITHOUT_ARRAY_WRAPPER
)
SELECT @body
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/446839.html
上一篇:使用之前行中的值更新行
