SQL - JSON_QUERY() 函数



内置的 SQL JSON_QUERY() 函数用于从 JSON 对象中提取数据。该函数用于从 JSON 字符串或表中的列中提取标量(单个)值或整个 JSON 对象。

如果 JSON_QUERY() 在找到路径之前发现表达式中无效的 JSON,则会返回错误;如果它不是对象或数组,则会以不同的模式返回值,例如 -

  • 在宽松模式下,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"} |
+---------------------------------------------------------+

示例

在下面的示例中,我们将指定宽松路径模式以返回标量值,并且它返回 NULL,因为 JSON_QUERY() 不执行标量值,因为它仅返回对象和数组 -

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"]}               |
+----------------------------------------------------------------------------------------------------------------+
sql-json-functions.htm
广告

© . All rights reserved.