Skip to main content

16. JSON

https://learn.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-ver16

Objectives

  • Hiểu được cách thức hoạt động của JSON trong SQL Server

Kiểu dữ liệu JSON là gì?

Kiểu dữ liệu JSON là một kiểu dữ liệu mới được hỗ trợ trong SQL Server 2016. Kiểu dữ liệu này cho phép lưu trữ dữ liệu dưới dạng JSON (JavaScript Object Notation). JSON là một định dạng dữ liệu phổ biến trong các ứng dụng web hiện nay.

Các hàm JSON

FOR JSON PATH

Dùng để chuyển kết quả của một câu lệnh SELECT thành một đối tượng JSON. Ví dụ:

SELECT
O.*,
(SELECT * FROM Customers AS C WHERE O.CustomerId = C.Id FOR JSON PATH, WITHOUT_ARRAY_WRAPPER) AS Customer,
(SELECT * FROM Employees AS E WHERE O.EmployeeId = E.Id FOR JSON PATH, WITHOUT_ARRAY_WRAPPER) AS Employee
FROM Orders AS O

Hàm JSON_VALUE

Dùng để trích xuất một giá trị từ một đối tượng JSON. Ví dụ: Trích xuất giá trị của thuộc tính name từ đối tượng JSON {"name": "John", "age": 30}

SELECT JSON_VALUE('{"name": "John", "age": 30}', '$.name') AS name

Hàm JSON_QUERY

Dùng để trích xuất một đối tượng JSON từ một đối tượng JSON. Ví dụ: Trích xuất đối tượng JSON {"name": "John", "age": 30} từ đối tượng JSON {"name": "John", "age": 30, "address": {"street": "123 Main St.", "city": "New York"}}

SELECT JSON_QUERY('{"name": "John", "age": 30, "address": {"street": "123 Main St.", "city": "New York"}}', '$.address') AS address

Hàm JSON_MODIFY

Dùng để thay đổi một giá trị trong một đối tượng JSON. Ví dụ: Thay đổi giá trị của thuộc tính name từ John thành Jane trong đối tượng JSON {"name": "John", "age": 30}

SELECT JSON_MODIFY('{"name": "John", "age": 30}', '$.name', 'Jane') AS name

Hàm ISJSON

Dùng để kiểm tra một chuỗi có phải là một đối tượng JSON hay không. Ví dụ: Kiểm tra chuỗi {"name": "John", "age": 30} có phải là một đối tượng JSON hay không

SELECT ISJSON('{"name": "John", "age": 30}') AS is_json

Hàm OPENJSON

Dùng để chuyển một đối tượng JSON thành một bảng. Ví dụ: Chuyển đối tượng JSON {"name": "John", "age": 30} thành bảng

SELECT * FROM OPENJSON('{"name": "John", "age": 30}')