You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MSSQL中通过键更新JSON字典中的值

在SQL Server中更新JSON字段内字典的指定键值

你可以通过动态拼接JSON路径结合JSON_MODIFY函数实现需求,核心是处理带特殊字符的键名,以下是完整解决方案:

完整更新语句

-- 定义目标键和新的访问时间
DECLARE @targetKey NVARCHAR(50) = '7f90a25b-f5d4-eb11-bacb-0022481aa333';
DECLARE @newVisitTime NVARCHAR(50) = '2023-07-06T13:00:00Z';

-- 更新符合条件的行
UPDATE Visits
SET AdditionalInfo = JSON_MODIFY(
    AdditionalInfo,
    -- 动态拼接带双引号的JSON路径,适配含特殊字符的键
    CONCAT('$.LastVisit."', @targetKey, '"'),
    @newVisitTime
)
-- 仅更新包含目标键的行
WHERE EXISTS (
    SELECT 1
    FROM OPENJSON(AdditionalInfo, '$.LastVisit')
    WHERE [key] = @targetKey
);

关键说明

  • JSON路径的特殊处理:由于目标键包含连字符这类特殊字符,必须用双引号将键名包裹,通过CONCAT动态生成$.LastVisit."目标键"格式的合法路径
  • 保留原有JSON结构:JSON_MODIFY仅修改指定键的值,JSON对象的其他键值对会完整保留
  • 精准筛选目标行:沿用你原有的EXISTS逻辑,确保只更新包含目标键的记录,不干扰其他行

验证更新结果

执行以下语句查看更新后的JSON数据:

SELECT Id, AdditionalInfo
FROM Visits;

内容的提问来源于stack exchange,提问作者JML

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:52:11