Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

JSON_KEYS () - Trả lại các khóa từ một đối tượng JSON trong MySQL

Trong MySQL, JSON_KEYS() hàm trả về các khóa từ giá trị cấp cao nhất của một đối tượng JSON. Các khóa được trả về dưới dạng một mảng JSON hoặc nếu là một path đối số được đưa ra, các khóa cấp cao nhất từ ​​đường dẫn đã chọn.

Bạn cung cấp tài liệu JSON làm đối số cho hàm.

Bạn cũng có thể (tùy chọn) cung cấp đối số thứ hai để chỉ định vị trí bắt đầu đường dẫn "cấp cao nhất" trong tài liệu JSON.

Cú pháp

Cú pháp như sau:

JSON_KEYS(json_doc[, path])

Ở đâu json_doc là tài liệu JSON và path là một đối số tùy chọn để xác định vị trí bắt đầu của đường dẫn "cấp cao nhất" trong tài liệu JSON.

Mảng kết quả trống nếu đối tượng được chọn trống. Nếu giá trị cấp cao nhất có các subobject lồng nhau, giá trị trả về không bao gồm các khóa từ các subobject đó.

Ví dụ 1 - Cách sử dụng cơ bản

Đây là một ví dụ để chứng minh.

SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';

Kết quả:

+-----------------+
| Result          |
+-----------------+
| ["a", "b", "c"] |
+-----------------+

Đây là một ví dụ khác:

SELECT 
  JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';

Kết quả:

+-----------------+
| Result          |
+-----------------+
| ["Age", "Name"] |
+-----------------+

Ví dụ 2 - Chỉ định một đường dẫn

Dưới đây là một ví dụ về việc chỉ định một đường dẫn. Điều này cho phép chúng tôi lấy các khóa từ một đối tượng lồng nhau (thay vì chỉ giới hạn ở đối tượng cấp cao nhất của toàn bộ tài liệu JSON).

SELECT 
  JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';

Kết quả:

+-----------------+
| Result          |
+-----------------+
| ["d", "e", "f"] |
+-----------------+

Ví dụ 3 - Đường dẫn Không tồn tại

Nếu bạn chỉ định một đường dẫn không tồn tại, giá trị NULL sẽ được trả về.

SELECT 
  JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
| NULL   |
+--------+

Bạn cũng sẽ nhận được giá trị NULL nếu bất kỳ đối số nào là NULL hoặc nếu đối số đầu tiên không phải là đối tượng JSON.

Ví dụ 4 - Mảng

Mảng không phải là đối tượng và chúng không chứa các cặp khóa / giá trị. Do đó, bạn sẽ nhận được giá trị NULL nếu bạn cố gắng trả về các khóa từ một mảng.

SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
| NULL   |
+--------+

Tuy nhiên, nếu bất kỳ phần tử nào của mảng chứa một đối tượng, bạn vẫn có thể sử dụng path đối số để lấy các khóa từ đối tượng đó.

SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';

Kết quả:

+------------+
| Result     |
+------------+
| ["a", "b"] |
+------------+

Ví dụ 5 - Đối tượng rỗng

Nếu đối tượng đã chọn trống, bạn sẽ nhận được một mảng trống.

SELECT JSON_KEYS('{}') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
| []     |
+--------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cơ chế theo dõi các thay đổi giản đồ DB

  2. Câu lệnh được soạn sẵn trong WordPress với điều kiện IN ()

  3. Tìm giá trị thường xuyên nhất trong cột SQL

  4. Quyền truy cập bị từ chối đối với người dùng '[email được bảo vệ]' (sử dụng mật khẩu:KHÔNG)

  5. Kích thước của cột int (11) trong mysql tính bằng byte là bao nhiêu?