SQL Server 数据库 深入理解和使用 JSON_QUERY 函数提取 JSON 对象或数组

SQL Server 数据库阿木 发布于 2025-07-10 11 次阅读


深入理解和使用 SQL Server JSON_QUERY 函数提取 JSON 对象或数组

随着互联网和大数据技术的发展,JSON(JavaScript Object Notation)已经成为数据交换和存储的常用格式。SQL Server 作为一种流行的关系型数据库管理系统,也提供了对 JSON 数据的支持。其中,JSON_QUERY 函数是 SQL Server 中用于提取 JSON 对象或数组中的特定值的重要工具。本文将深入探讨 JSON_QUERY 函数的使用方法,并通过实际案例展示其在提取 JSON 数据中的应用。

JSON_QUERY 函数简介

JSON_QUERY 函数是 SQL Server 2016 及更高版本中引入的,用于从 JSON 数据中提取特定值。该函数可以从 JSON 对象或数组中提取嵌套的值,支持多种数据类型,包括字符串、数字、布尔值等。

函数语法

sql

JSON_QUERY(json, '$.path')


- `json`:表示包含 JSON 数据的列或变量。

- `'$.'`:表示 JSON 对象的路径。

- `path`:表示要提取的 JSON 对象或数组的路径。

路径表达式

- `$.path`:表示从根对象开始提取值。

- `$[index]`:表示从 JSON 数组中提取特定索引的值。

- `$.path[0]`:表示从 JSON 数组中提取第一个元素。

- `$.path[1].subpath`:表示从 JSON 数组中提取第二个元素的子路径。

JSON_QUERY 函数的使用方法

1. 提取 JSON 对象中的值

假设我们有一个名为 `Orders` 的表,其中包含一个名为 `OrderDetails` 的 JSON 列,如下所示:

sql

CREATE TABLE Orders (


OrderID INT PRIMARY KEY,


OrderDetails NVARCHAR(MAX)


);

INSERT INTO Orders (OrderID, OrderDetails)


VALUES (1, N'{"ProductID": 1001, "Quantity": 2, "UnitPrice": 10.99}');


要提取 `ProductID` 的值,可以使用以下查询:

sql

SELECT OrderID, JSON_QUERY(OrderDetails, '$.ProductID') AS ProductID


FROM Orders;


2. 提取 JSON 数组中的值

假设 `OrderDetails` 列包含一个 JSON 数组,如下所示:

sql

INSERT INTO Orders (OrderID, OrderDetails)


VALUES (2, N'{"ProductID": [1001, 1002, 1003], "Quantity": [2, 1, 3], "UnitPrice": [10.99, 15.99, 20.99]}');


要提取数组中的第一个 `ProductID` 的值,可以使用以下查询:

sql

SELECT OrderID, JSON_QUERY(OrderDetails, '$[0].ProductID') AS ProductID


FROM Orders;


3. 提取嵌套 JSON 对象中的值

假设 `OrderDetails` 列包含嵌套的 JSON 对象,如下所示:

sql

INSERT INTO Orders (OrderID, OrderDetails)


VALUES (3, N'{"OrderHeader": {"OrderID": 1004, "CustomerID": "C123"}, "OrderDetails": [{"ProductID": 1001, "Quantity": 2, "UnitPrice": 10.99}, {"ProductID": 1002, "Quantity": 1, "UnitPrice": 15.99}]}');


要提取 `CustomerID` 的值,可以使用以下查询:

sql

SELECT OrderID, JSON_QUERY(OrderDetails, '$.OrderHeader.CustomerID') AS CustomerID


FROM Orders;


JSON_QUERY 函数的注意事项

- JSON 数据必须符合 JSON 格式,否则会导致错误。

- JSON_QUERY 函数不支持所有 JSON 数据类型,例如 `null`、`undefined` 等。

- 在使用 JSON_QUERY 函数时,要注意路径表达式的正确性,避免出现错误。

总结

JSON_QUERY 函数是 SQL Server 中处理 JSON 数据的重要工具,可以帮助我们轻松地从 JSON 对象或数组中提取特定值。相信读者已经对 JSON_QUERY 函数有了深入的了解。在实际应用中,我们可以根据具体需求灵活运用 JSON_QUERY 函数,提高数据处理效率。