SQL Server无标识键JSON数组指定元素更新方法求教
SQL Server JSON数组字段更新解决方案
失败原因
更新操作未生效的核心原因是JSON_MODIFY函数的JSON路径语法错误:访问JSON数组指定索引的元素时,无需在根节点标识$和索引符号[之间添加多余的点号,你原来写的$.[0].CarTd属于非法路径格式。
修正后的可运行代码
DECLARE @CarJaosn VARCHAR(MAX) = '[ { "CarTd": 1208, "HoldReasonEnum":2, "Attachment": "", "FromDate":"2021-08-18", "ToDate":"2021-08-18" } ]' -- 修正路径后的更新语句 SET @CarJaosn = JSON_MODIFY(@CarJaosn, '$[0].CarTd', 5); -- 可选:执行后验证修改结果 SELECT @CarJaosn AS FullUpdatedJson, JSON_VALUE(@CarJaosn, '$[0].CarTd') AS ModifiedCarTdValue
其他注意事项
- 该JSON函数仅支持SQL Server 2016及以上版本、Azure SQL数据库,低于该版本的SQL Server实例无法使用相关语法
- 如果你不确定数组索引是否匹配目标元素,可以先通过
JSON_VALUE(@CarJaosn, '$[0].CarTd')查询对应位置的字段值,确认路径正确后再执行更新 - 原变量声明中
Attachment字段的空值如果用单引号表示,需要转义写为两个单引号'',直接用双引号写空字符串可以避免转义问题
内容的提问来源于stack exchange,提问作者Chamin Thilakarathne
相关产品推荐
相关产品推荐

