0

我在尝试从 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。

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

谢谢

4

1 回答 1

2

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

例子:

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

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

输出:

--------------------------
(No column name)
--------------------------
myNameSpace.myClass, myDll
于 2019-07-25T13:00:31.010 回答