這個問題與我之前解決的問題有關。

這是我試圖訪問標簽“GetCustomReportResult”中的列和值的內容:
SELECT
y.cijreport,
y.ApplicationId,
JSON_VALUE(x.value, '$.CIP') as CIP,
JSON_VALUE(x.value, '$.CIQ') as CIQ
--other fields
FROM table as y
CROSS APPLY OPENJSON (cijreport) as x
where cijreport is not null
我現在在執行時收到此錯誤:
訊息 13609,級別 16,狀態 2,第 1 行 JSON 文本的格式不正確。在位置 0 處發現了意外字符“o”。
uj5u.com熱心網友回復:
首先,您缺少 JSON 路徑'$.data.response'。
接下來,您不能JSON_VALUE在整個物件上使用,它僅適用于標量值。您可以使用JSON_QUERY:
SELECT
y.cijreport,
y.ApplicationId,
JSON_QUERY(x.value, '$.CIP') as CIP,
JSON_QUERY(x.value, '$.CIQ') as CIQ, x.VALUE
--other fields
FROM YourTable as y
CROSS APPLY OPENJSON (cijreport, '$.data.response') as x;
或者您可以在中指定屬性名稱 OPENJSON
SELECT
y.cijreport,
y.ApplicationId,
x.CIP,
x.CIQ
--other fields
FROM YourTable as y
CROSS APPLY OPENJSON (cijreport, '$.data.response')
WITH (
CIP nvarchar(max) AS JSON,
CIQ nvarchar(max) AS JSON
) AS x;
資料庫<>小提琴
請注意,where cijreport is not null過濾器不是必需的,因為CROSS APPLY OPENJSON在這種情況下將回傳 0 行,并且其CROSS APPLY行為類似于內部聯接。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/333470.html
標籤:sql json sql-server 查询语句
上一篇:MySQL查詢介紹
下一篇:將列更新為重復
