我正在尝试从表中的某些 JSON 中获取值。这是我的查询:
Select JSON_VALUE(JSON_Data, '$.Person's_ID') FROM Table
尝试获取 Person's Id 的值。这是存储在 JSON_Data 列中的 JSON(部分):
"Person's_ID": "Test"
我曾尝试使用两个单引号,但这仍然给出错误:
JSON 路径格式不正确。在第 8 位发现意外字符 '''。”
使用反斜杠转义单引号也不起作用。
我正在尝试从表中的某些 JSON 中获取值。这是我的查询:
Select JSON_VALUE(JSON_Data, '$.Person's_ID') FROM Table
尝试获取 Person's Id 的值。这是存储在 JSON_Data 列中的 JSON(部分):
"Person's_ID": "Test"
我曾尝试使用两个单引号,但这仍然给出错误:
JSON 路径格式不正确。在第 8 位发现意外字符 '''。”
使用反斜杠转义单引号也不起作用。
这可能是一个很好的教训,不要制作垃圾 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