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

如何从SQL Server表的JSON数据中获取@odata.etag值

解决SQL Server提取JSON中@odata.etag的路径错误问题

错误原因

SQL Server的JSON路径解析器中,@是表示根节点的特殊语法字符,直接使用@odata.etag会被误判为无效路径,导致"JSON path is not properly formatted"错误。需要明确告知解析器这是一个包含特殊字符的键名。

解决方法

针对包含@和.的JSON键名,需用双引号包裹键名或方括号语法来指定路径,以下是具体实现:

方法1:使用双引号包裹键名(推荐)

通过$."@odata.etag"的路径格式,让解析器识别完整的键名:

SELECT etag
FROM YourTableName
CROSS APPLY OPENJSON(YourJsonColumnName)
WITH (
  etag NVARCHAR(MAX) '$."@odata.etag"' -- 用双引号包裹带特殊字符的键名
)

方法2:使用方括号语法

用方括号包裹键名,注意SQL中单引号需要转义(用两个单引号):

SELECT etag
FROM YourTableName
CROSS APPLY OPENJSON(YourJsonColumnName)
WITH (
  etag NVARCHAR(MAX) '$[''@odata.etag'']' -- 转义单引号包裹键名
)

简化方式:直接用JSON_VALUE提取

如果只需单独提取该字段,也可以直接使用JSON_VALUE函数,路径规则相同:

SELECT JSON_VALUE(YourJsonColumnName, '$."@odata.etag"') AS etag
FROM YourTableName

示例验证

假设你的JSON数据为:

{
  "@odata.etag": "W/\"xyz789\"",
  "Name": "TestData"
}

使用上述任一方法,都能正确提取出W/"xyz789"作为etag值。

内容的提问来源于stack exchange,提问作者Daniel de Jong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:51:59