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

MariaDB JSON_KEYS () Giải thích

Trong MariaDB, JSON_KEYS() là một hàm tích hợp trả về một mảng các khóa cấp cao nhất từ ​​tài liệu JSON. Nếu một đường dẫn được cung cấp, nó sẽ trả về các khóa cấp cao nhất từ ​​đường dẫn đó.

Nó loại trừ các khóa từ các đối tượng con lồng nhau trong cấp độ được chỉ định.

Ngoài ra, nếu đối tượng đã chọn trống, một mảng trống sẽ được trả về.

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 đường dẫn trong tài liệu.

Ví dụ

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

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_KEYS(@json_document);

Kết quả:

+----------------------------+
| JSON_KEYS(@json_document)  |
+----------------------------+
| ["name", "type", "weight"] |
+----------------------------+

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 trong tài liệu:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_KEYS(
    @json_document, 
    '$.details'
    ) AS Result;

Kết quả:

+------------------------------+
| Result                       |
+------------------------------+
| ["type", "weight", "awards"] |
+------------------------------+

Như đã đề cập, các đối tượng phụ bị loại trừ khỏi kết quả.

Đường dẫn không tồn tại

Chuyển một đường dẫn không tồn tại trong tài liệu JSON dẫn đến NULL .

Ví dụ:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_KEYS(
    @json_document, 
    '$.wrong'
    ) AS Result;

Kết quả:

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

Đối tượng trống

Nếu đối tượng đã chọn trống, một mảng trống được trả về:

SELECT JSON_KEYS('{}');

Kết quả:

+-----------------+
| JSON_KEYS('{}') |
+-----------------+
| []              |
+-----------------+

Đối số rỗng

Nếu bất kỳ đối số nào là NULL , kết quả là NULL :

SELECT 
    JSON_KEYS(null),
    JSON_KEYS(null, '$.type'),
    JSON_KEYS('{"a":1}', null);

Kết quả:

+-----------------+---------------------------+----------------------------+
| JSON_KEYS(null) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) |
+-----------------+---------------------------+----------------------------+
| NULL            | NULL                      | NULL                       |
+-----------------+---------------------------+----------------------------+

Đếm tham số không chính xác

Không cung cấp đối số dẫn đến lỗi:

SELECT JSON_KEYS();

Kết quả:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'

Điều này cũng xảy ra tương tự khi bạn cung cấp quá ít hoặc quá nhiều đối số:

SELECT JSON_KEYS('{ "a": 1}', 1, 2);

Kết quả:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm hiểu các khả năng và tính năng trong MariaDB SkySQL

  2. Cách SQRT () hoạt động trong MariaDB

  3. MariaDB LOCALTIMESTAMP () Giải thích

  4. DROP BẢNG NẾU TỒN TẠI trong MariaDB

  5. Cách CRC32 hoạt động trong MariaDB