无法使用 SQL JSON_QUERY 提取 属性

Unable to extract property with SQL JSON_QUERY

我将以下 Json 数据存储在 sql table 中:

{"OrderNumber":"12450-OF","OrderType":"OF"}

我需要从 sql 查询中提取订单号

下面的语句returns null:

select 
   JSON_QUERY(Metadata,'$.OrderNumber') AS 'orderNumber'
from Documents

其中 Documents 是我的 table,metadata 是存储我的 json 数据的列。

您需要使用 JSON_VALUE() 从 JSON 内容中提取标量值。 JSON_QUERY() 通常用于从 JSON 字符串中提取对象或数组。

SELECT JSON_VALUE(Metadata,'$.OrderNumber') AS 'orderNumber'
FROM (VALUES
   ('{"OrderNumber":"12450-OF","OrderType":"OF"}')
) Documents (Metadata)

请注意,如果您想从存储的 JSON 中提取更多值,另一种选择是使用显式模式 OPENJSON()

SELECT *
FROM Documents d
CROSS APPLY OPENJSON(d.Metadata, '$') WITH (
   OrderNumber varchar(10) '$.OrderNumber',
   OrderType varchar(2) '$.OrderType'
) j

您只需将函数 Json_Query 替换为 JSON_VALUE。

JSON_VALUE use for getting value from json.
JSON_Query use for getting object from json string.

例如,如果您有:

"OrderNumber":["12450-OF","12450-02"] 

那么您的查询将 return 对象

["12450-OF","12450-02"]