T-SQL - JSON_QUERY : select json 名称中包含特殊字符的属性 属性

T-SQL - JSON_QUERY : select json properties with special characters in the property name

我在尝试 select 来自 JSON 列的值时遇到了一些问题。 json 是:

{
    "$type":"myNameSpace.myClass, myDll"
}

我正在尝试用类似

的方式查询它
SELECT myIdColumnName, myJsonColumnName, JSON_QUERY(myJsonColumnName, '$.$type') as mType

问题是路径“$.$type”无效,意大利语错误是:

 Il formato del percorso JSON non è corretto. È stato trovato il carattere imprevisto '$' nella posizione 2.

这基本上表明解析器不希望在“.”之后出现“$”。 我已经尝试使用 '$.type' 和 '$."$type"' 但在这两种情况下我都将 null 作为 mType.

你能告诉我这个查询的正确语法吗?

谢谢

当您想要提取 JSON 对象或标量值并且您的 path 以美元符号 $ 开头时,您需要用引号将其括起来 "。函数 JSON_QUERYJSON 字符串中提取对象或数组,因此当您想从 JSON 文本中提取标量值时,JSON_VALUE 在这里更合适。

示例:

DECLARE @json nvarchar(max) = N'{
    "$type":"myNameSpace.myClass, myDll"
}'

SELECT JSON_VALUE(@json, '$."$type"')

输出:

--------------------------
(No column name)
--------------------------
myNameSpace.myClass, myDll