SQL Server - 如何查询以数值为键的 JSON 字符串

问题描述 投票:0回答:1

我在数据库中有一个表,其中一列包含一个 JSON 字符串。我需要查询这个字符串。

问题在于 JSON 字符串中的某些键名称是数字,而 SQL Server 拒绝允许我查询它们。

JSON 字符串示例:{ "1": "abc", "2": "bcd" }

当我尝试执行以下代码时,出现错误:

SELECT
    JSON_QUERY(JSONMessage, '$.1') as test
  FROM [table]

错误:

Msg 13607, Level 16, State 4, Line 2
JSON path is not properly formatted. Unexpected character '1' is found at position 2.

我尝试过以下方法:

JSON_QUERY(JSONMessage, '$.''1''')
JSON_QUERY(JSONMessage, '$."1"')
JSON_QUERY(JSONMessage, '$.[1]')
JSON_QUERY(JSONMessage, '$.{1}')
JSON_QUERY(JSONMessage, '$.["1"]')
JSON_QUERY(JSONMessage, '$."[1]"')

..没有任何积极的结果。

这有什么技巧吗?

json sql-server
1个回答
5
投票

应该使用 JSON_VALUE:

SELECT
JSON_VALUE(JSONMessage, '$."1"') as test
FROM [table]

感谢杰罗恩·莫斯特

© www.soinside.com 2019 - 2024. All rights reserved.