Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在SQL server中修改多对象JSON数组中的所有值吗?_Json_Sql Server - Fatal编程技术网

我可以在SQL server中修改多对象JSON数组中的所有值吗?

我可以在SQL server中修改多对象JSON数组中的所有值吗?,json,sql-server,Json,Sql Server,在多对象JSON数组中,我想修改对象的所有值,我很难访问这些值,即 范例-- 我想将所有对象的性别值修改为“M” 它不起作用。有什么方法可以解决我的问题吗?这应该会有帮助 DECLARE @jsonstr NVARCHAR(MAX) = '[{"name": "John","sex": "F"}, {"name": "Jane","sex": "F"}]}' ;WITH CTE AS ( SELECT * FROM OPENJSON(@jsonstr) WITH ([name] VARC

在多对象JSON数组中,我想修改对象的所有值,我很难访问这些值,即

范例--

我想将所有对象的性别值修改为“M”


它不起作用。有什么方法可以解决我的问题吗?

这应该会有帮助

DECLARE @jsonstr NVARCHAR(MAX) = '[{"name": "John","sex": "F"}, {"name": "Jane","sex": "F"}]}'
;WITH CTE AS
(
  SELECT * FROM OPENJSON(@jsonstr)
  WITH ([name] VARCHAR(100) '$.name' , [sex] VARCHAR(100) '$.sex' )
)
,CTE1 AS
(
    SELECT [name], case when [sex] = 'F' THEN 'M' ELSE [sex] END [sex]
    FROM CTE
)
SELECT * 
FROM CTE1
FOR JSON AUTO
GO
输出

[{"name":"John","sex":"M"},{"name":"Jane","sex":"M"}]
DECLARE @jsonstr NVARCHAR(MAX) = '[{"name": "John","sex": "F"}, {"name": "Jane","sex": "F"}]}'
;WITH CTE AS
(
  SELECT * FROM OPENJSON(@jsonstr)
  WITH ([name] VARCHAR(100) '$.name' , [sex] VARCHAR(100) '$.sex' )
)
,CTE1 AS
(
    SELECT [name], case when [sex] = 'F' THEN 'M' ELSE [sex] END [sex]
    FROM CTE
)
SELECT * 
FROM CTE1
FOR JSON AUTO
GO
[{"name":"John","sex":"M"},{"name":"Jane","sex":"M"}]