1

我正在尝试从表中的某些 JSON 中获取值。这是我的查询:

Select JSON_VALUE(JSON_Data, '$.Person's_ID') FROM Table 

尝试获取 Person's Id 的值。这是存储在 JSON_Data 列中的 JSON(部分):

"Person's_ID": "Test"

我曾尝试使用两个单引号,但这仍然给出错误:

JSON 路径格式不正确。在第 8 位发现意外字符 '''。”

使用反斜杠转义单引号也不起作用。

4

1 回答 1

5

这可能是一个很好的教训,不要制作垃圾 JSON(并在将其插入数据库之前对其进行验证),因为根据标准,单引号不是实体名称中可接受的字符。:-)

您可以尝试这种类型的替换,但性能会非常糟糕,它会替换的所有实例Person's_ID,而不仅仅是当它作为对象出现时:

SELECT JSON_VALUE(REPLACE(JSON_Data,'Person''s_ID','Person_s_ID'), '$.Person_s_ID')
  FROM dbo.Table;

工作示例:

DECLARE @d varchar(255) = '{"Person''s_ID": "Test"}';
SELECT JSON_VALUE(REPLACE(@d,'Person''s','Person_s'), '$.Person_s_ID');

结果:

Test
于 2018-11-08T00:44:29.570 回答