You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

MS SQL Server中访问数字属性名JSON的JSON_VALUE问题求助

没问题,这个坑我之前也遇到过!SQL Server的JSON路径解析器对纯数字属性名的处理确实有特殊规则,直接写会被当成数组索引,导致路径格式错误。

快速解决方案

把纯数字的属性名用双引号包裹在JSON路径里,明确告诉SQL Server这是字符串类型的属性键,修改后的查询语句如下:

SELECT JSON_Value(JSONData, '$."00100020".Value') AS PatientID FROM Instance

为什么之前会报错?

SQL Server的JSON路径语法有个关键规则:

  • 如果属性名符合T-SQL标识符规则(比如以字母开头、不含特殊字符),可以直接写在路径里(就像你给属性名加前缀"A"后的写法)
  • 但纯数字的属性名不符合标识符规则,解析器会默认把它当成数组的索引值,而非对象的属性键,所以才会抛出“JSON路径格式不正确”的错误。用双引号包裹后,解析器就会明确将其识别为字符串属性名了。

测试验证

针对你提供的原始JSON数据:

{ "00100020": { "vr":"LO", "Value":"123456789" } }

执行修改后的查询,就能正常返回123456789作为PatientID的值,完全不需要改动原始的JSON结构。

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

火山引擎 最新活动