如何修复 SQL 服务器 JSON_VALUE 路径有“-”错误

How to fix SQL server JSON_VALUE path has '-' error

我正在尝试获取 JSON 类型的 sql 字段的值。不幸的是路径有'-',所以当我尝试获取值时出现错误。

field->** **{"Con":["AA"],"X-Location-Latitude":["55.06"]}

当我尝试使用以下查询获取 json 值时

SELECT JSON_VALUE(field, '$.X-Location-Latitude') 
FROM table

我收到这个错误

Json path is not properly formatted unexpected character '-' is found

我也尝试添加双引号作为

SELECT JSON_VALUE(field, '$."X-Location-Latitude"') 
FROM table

这返回了 NULL。

有人有解决办法吗?

所以你最初发布的是:

field-> {"Con":"[AA]","X-Location-Latitude":"[55]"}

"[55]"是一个长度为4的字符串; '$."X-Location-Latitude"' 对于该单个值是正确的。


我现在看到您已将其更改为:

{"Con":["AA"],"X-Location-Latitude":["55.06"]}

["55.06"] 是一个 完全不同的东西 (而不是因为 .06);它是一个 字符串数组 ,只有一个元素 "55.06"。这使得 JSON_VALUE

完全不同

JSON_VALUE 不能与 select 为数组的路径一起使用;您必须指定数组中的单个值,例如:

SELECT JSON_VALUE(field, '$."X-Location-Latitude"[0]') FROM table
                                                 ^^^
                                          first array element

JSON_VALUE 必须与标量(单值)属性一起使用,而不是 collections/arrays(包含在 [] 中的东西)或复杂对象(包含在 {} 中的东西)

The fine manual 有一个很好的 table 关于当你在 JSON_VALUE 下尝试 select 各种事情时会发生什么,在松散和严格模式下

JSON_QUERY 替换 JSON_VALUE 解决了我的问题。

所以下面的代码工作正常

SELECT JSON_QUERY(field, '$."X-Location-Latitude"') FROM table 

Returns ["55.06"]