如何從 SQL Server 中的 JSON 陣列中洗掉專案。
這是我的 JSON:
[
{
"nodeId": 15,
"nodeCondition": "needRepairing=true"
},
{
"nodeId": 16,
"nodeCondition": "needWashing=false"
}
]
它存盤在列中。我想按他們的洗掉元素nodeId。
uj5u.com熱心網友回復:
我認為您不能從 JSON 陣列中洗掉專案,因此您需要再次決議、過濾和重建 JSON 陣列。
桌子:
SELECT *
INTO JsonTable
FROM (VALUES
(N'[
{"nodeId":13,"nodeCondition":"needRepairing=true"},
{"nodeId":14,"nodeCondition":"needRepairing=true"},
{"nodeId":15,"nodeCondition":"needRepairing=true"},
{"nodeId":16,"nodeCondition":"needWashing=false"}
]')
) v (JsonColumn)
陳述:
UPDATE JsonTable
SET JsonColumn = (
SELECT nodeId, nodeCondition
FROM OPENJSON(JsonColumn) WITH (
nodeId int '$.nodeId',
nodeCondition nvarchar(1000) '$.nodeCondition'
)
WHERE nodeId NOT IN (13, 15)
FOR JSON PATH
)
結果:
| json列 |
|---|
| [{"nodeId":14,"nodeCondition":"needRepairing=true"},{"nodeId":16,"nodeCondition":"needWashing=false"}] |
JSON_MODIFY()請注意,在 JSON 物件的情況下,您可以使用、 使用lax模式和NULL作為新值洗掉特定鍵。
uj5u.com熱心網友回復:
例如,如果你想洗掉 nodeId 16 那么你可以試試這個:
DECLARE @YourJson NVARCHAR(MAX) = N'[
{"nodeId":15,"nodeCondition":"needRepairing=true"},
{"nodeId":16,"nodeCondition":"needWashing=false"}
]';
SELECT * FROM (SELECT * FROM OPENJSON(@YourJson) WITH(nodeId
INT,nodeCondition NVARCHAR(MAX)) WHERE nodeId <> 16) AS R FOR JSON
AUTO;
GO
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/451911.html
