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

SQL Server读取含连字符的JSON属性报错,求最优解决方案

读取含连字符的JSON属性(SQL Server)

在SQL Server中使用OPENJSON读取包含连字符的JSON属性(如示例中的name-surname)时,会触发错误:JSON path is not properly formatted. Unexpected character '-' is found at position 11。无需替换整个JSON字符串中的连字符,直接调整JSON路径格式即可解决问题。

最优解决方案

SQL Server的JSON路径语法支持用双引号包裹带特殊字符的属性名,无需修改原始JSON内容,直接在路径中对含连字符的属性名进行包裹即可。

修改后的代码

DECLARE @json NVARCHAR(MAX);
SET @json = N'[
  {"id": 2, "info": {"name-surname": "John-TAG","firstname": "John", "lastname": "Smith"}, "age": 25},
  {"id": 5, "info": {"name-surname": "John-CAB","firstname": "Jane", "lastname": "Smith"}, "dob": "2005-11-04T12:00:00"}
]';

SELECT *
FROM OPENJSON(@json) WITH (
    id INT 'strict $.id',
    namesurname NVARCHAR(50) '$.info."name-surname"', -- 用双引号包裹含连字符的属性名
    firstName NVARCHAR(50) '$.info.firstname',
    lastName NVARCHAR(50) '$.info.lastname',
    age INT,
    dateOfBirth DATETIME2 '$.dob'
);

说明

当JSON属性名包含连字符、空格、特殊符号等不符合常规标识符规则的字符时,只需在JSON路径中将该属性名用双引号括起来,就能让SQL Server正确识别属性,避免了修改原始JSON字符串带来的性能损耗和误替换风险(比如属性值中的连字符被错误替换)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:17:03