SQL JSON_QUERY()函数
内置的SQL JSON_QUERY() 函数用于从JSON对象中提取数据。该函数用于从JSON字符串或表中的列中提取标量(单个)值或整个JSON对象。
如果在找到路径之前发现不合法的JSON表达式,JSON_QUERY()会返回错误,并且如果它不是对象或数组,则以不同的模式返回值,如下所示:
- 在宽松模式下,JSON_QUERY返回null。
-
在严格模式下,JSON_QUERY返回错误。
语法
以下是SQL JSON_QUERY()函数的语法:
JSON_QUERY ( expression [ , path ] )
参数
- expression - 通常是列的名称或包含JSON文本的变量的名称。
-
path - 指定要提取的属性的JSON路径。JSON路径可以是宽松或严格模式进行解析。如果未指定解析模式,默认为宽松模式。
示例
通过以下查询,我们可以从JSON变量中检索第一个客户端 –
DECLARE @work VARCHAR(4000);
SET @work = N'{"customers":
[
{"Name": "HELLO", "Age": 23, "Department": "Mechnical"},
{"Name": "WORLD", "Age": 25, "Department": "BBA"}
]
}';
SELECT JSON_QUERY(@work, '$.customers[0]') AS Result;
输出
当我们执行上述查询时,输出如下所示−
+---------------------------------------------------------+
| Result |
+---------------------------------------------------------+
| {"Name": "HELLO", "Age": 23, "Department": "Mechnical"} |
+---------------------------------------------------------+
示例
在下面的示例中,我们将指定松散路径模式以返回标量值,但由于JSON_QUERY()不支持标量值,所以它返回NULL,它只返回对象和数组。-
SELECT JSON_QUERY('{"car": "RX100"}', 'lax $.car') AS 'Result';
输出
当我们执行上述查询时,得到的输出如下所示 –
+------------------------------------+
| Result|
+------------------------------------+
| NULL |
+------------------------------------+
示例
让我们考虑另一种情况,我们将使用严格路径模式,并通过以下查询获取输出:
SELECT JSON_QUERY('{"car": "RX100"}', 'strict $.car') AS 'Result';
输出
当我们执行上述查询时,输出结果如下:-
Object or array cannot be found in the specified JSON path.
示例
让我们来看一个示例,在这个示例中,我们将使用以下查询来提取列 –
DECLARE @work VARCHAR(150)
= '{"Item":"Iphone 13",
"Price":70000,
"Color":["Green", "Pink", "White"]}'
SELECT JSON_QUERY(@work,'$.Color') AS Result
输出
执行上述查询后,输出如下所示−
+----------------------------------------------+
| Result |
+----------------------------------------------+
| ["Green", "Pink", "White"] |
+----------------------------------------------+
示例
让我们考虑另一个情况,我们将从JSON字符串中检索标量值,并通过以下查询来检查结果-
DECLARE @work VARCHAR(150)
= '{"Item":"Iphone 13",
"Price":70000,
"Color":["Green", "Pink", "White"]}'
SELECT JSON_QUERY(@work,'$.Item') AS Result
输出
执行上述查询后,输出结果如下所示 –
+------------------------------------+
| Result|
+------------------------------------+
| NULL |
+------------------------------------+
示例
让我们看一个示例,在这个示例中,我们将使用以下查询来检索完整的JSON字符串 –
DECLARE @work VARCHAR(150)
= '{"Item":"Iphone 13",
"Price":70000,
"Color":["Green", "Pink", "White"]}'
SELECT JSON_QUERY(@work,'$') AS Result
输出
执行上述查询后,输出结果如下所示 –
+----------------------------------------------------------------------------------------------------------------+
| Result |
+----------------------------------------------------------------------------------------------------------------+
| {"Item":"Iphone 13", "Price":70000, "Color":["Green", "Pink", "White"]} |
+----------------------------------------------------------------------------------------------------------------+