gpt4 book ai didi

sql-server - SQL Server JSON_Modify,如何更新全部?

转载 作者:行者123 更新时间:2023-12-03 00:20:34 25 4
gpt4 key购买 nike

我正在尝试使用 Json_Modify 更新所有列的值:

DECLARE @JSON NVARCHAR(MAX)
SET @JSON =
N'{
"A":1,
"TMP": [
{"A":"VALUE1", "B": "VALUE2", "C": 1},
{"A":"VALUE3", "B": "VALUE4", "C": 2},
{"A":"VALUE5", "B": "VALUE6", "C": 3}]}
'

SET @JSON = JSON_MODIFY(@JSON, '$.TMP.A', 'JEJE')

SELECT * FROM OPENJSON(@JSON, '$.TMP') WITH ( A NCHAR(10), B NCHAR(10), C INT )

例如,我需要用“JEJE”更新所有“A”列,但它不起作用。

最佳答案

这里有两个选项。免责声明:我不是 JSON 到 sql server 2016 的专家,但我已经将一些东西组合在一起。

选项 1:您显然是从 JSON 字符串创建结果集。为什么不创建结果集然后更新它呢?

DECLARE @jsontable TABLE (A varchar(50), b varchar(50), c varchar(50))
DECLARE @JSON NVARCHAR(MAX)

SET @JSON =
N'{
"A":1,
"TMP": [
{"A":"VALUE1", "B": "VALUE2", "C": 1},
{"A":"VALUE3", "B": "VALUE4", "C": 2},
{"A":"VALUE5", "B": "VALUE6", "C": 3}]}
'

--SET @JSON = JSON_MODIFY(@JSON, '$.TMP.A', 'JEJE')
INSERT INTO @jsontable (a,b,c)
SELECT * FROM OPENJSON(@JSON, '$.TMP') WITH ( A NCHAR(10), B NCHAR(10), C INT )

UPDATE @jsontable
SET a = 'JEJE'

SELECT *
FROM @jsontable

选项 2:您可以操作 JSON 组件,但必须将索引传递给函数。

DECLARE @JSON NVARCHAR(MAX)
SET @JSON =
N'{
"A":1,
"TMP": [
{"A":"VALUE1", "B": "VALUE2", "C": 1},
{"A":"VALUE3", "B": "VALUE4", "C": 2},
{"A":"VALUE5", "B": "VALUE6", "C": 3}]}
'

SET @JSON = JSON_MODIFY(@JSON, '$.TMP[0].A', 'JEJE')
SET @JSON = JSON_MODIFY(@JSON, '$.TMP[1].A', 'JEJE')
SET @JSON = JSON_MODIFY(@JSON, '$.TMP[2].A', 'JEJE')

SELECT * FROM OPENJSON(@JSON, '$.TMP') WITH ( A NCHAR(10), B NCHAR(10), C INT )

关于sql-server - SQL Server JSON_Modify,如何更新全部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41383827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com