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

SQL Server用JSON_MODIFY向空列追加数据报位置0意外字符错误

问题根因

JSON_MODIFY 要求传入的第一个参数必须为合法JSON格式文本,空字符串不属于合法JSON,因此即便添加lax修饰符也无法解决该问题——lax仅用于处理JSON路径不存在的场景,无法绕过输入JSON本身不合法的校验。

解决方案

你可以通过条件判断处理空字符串场景,空值时先替换为合法的空JSON数组再执行追加操作,单条UPDATE语句即可完成,无需前置写入逻辑,完全兼容你现有的检查约束:

UPDATE t
SET t.MyJSONColumn = JSON_MODIFY(
    ISNULL(NULLIF(t.MyJSONColumn, ''), '[]'),
    'append $',
    'This is some appended stuff.'
)
FROM dbo.MyTable t
WHERE t.PrimaryKey = 1
逻辑说明
  • NULLIF(t.MyJSONColumn, '') 会将空字符串转换为NULL,非空合法JSON值保持不变
  • ISNULL(..., '[]') 会将NULL值替换为合法的空JSON数组[]
  • 处理后的参数传入JSON_MODIFY即可正常执行追加操作,原有合法JSON的处理逻辑和之前完全一致
补充优化点

原有写法中给追加的字符串不需要手动包裹双引号,JSON_MODIFY会自动为字符串类型的值添加引号和转义处理,避免生成格式错误的JSON。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:04