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

MariaDB JSON_TYPE () Giải thích

Trong MariaDB, JSON_TYPE() là một hàm tích hợp trả về kiểu giá trị JSON, dưới dạng một chuỗi.

Cú pháp

Cú pháp như sau:

JSON_TYPE(json_val)

Ở đâu json_val là giá trị trả về kiểu.

Các loại đối tượng

Các loại trả lại có thể được liệt kê trong bảng sau:

Loại trả lại Giá trị Ví dụ
ARRAY Mảng JSON. [1, 2, 3]
OBJECT Đối tượng JSON. {"a":"1"}
BOOLEAN JSON đúng / sai nghĩa đen. true hoặc false
DOUBLE Một số có ít nhất một dấu phẩy động thập phân. 1.2
INTEGER Một số không có dấu phẩy động thập phân. 1
NULL JSON null theo nghĩa đen. Điều này được trả về dưới dạng một chuỗi và không được nhầm lẫn với NULL trong SQL giá trị. null
STRING Chuỗi JSON. "bird"

Ví dụ

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

SET @json = '
    { 
        "name" : "Fluffy", 
        "type" : "Cat" 
    }
';

SELECT JSON_TYPE(@json);

Kết quả:

+------------------+
| JSON_TYPE(@json) |
+------------------+
| OBJECT           |
+------------------+

Trong ví dụ này, tôi đã chuyển toàn bộ tài liệu JSON, có loại OBJECT .

Dưới đây là các ví dụ khác:

SELECT 
    JSON_TYPE('[1, 2, 3]'),
    JSON_TYPE('{ "a" : 1 }'),
    JSON_TYPE('true'),
    JSON_TYPE('false'),
    JSON_TYPE(10.59),
    JSON_TYPE(10),
    JSON_TYPE(null),
    JSON_TYPE('"Fuzzy Smith"');

Kết quả (sử dụng đầu ra dọc):

    JSON_TYPE('[1, 2, 3]'): ARRAY
  JSON_TYPE('{ "a" : 1 }'): OBJECT
         JSON_TYPE('true'): BOOLEAN
        JSON_TYPE('false'): BOOLEAN
          JSON_TYPE(10.59): DOUBLE
             JSON_TYPE(10): INTEGER
           JSON_TYPE(null): NULL
JSON_TYPE('"Fuzzy Smith"'): STRING

Trích xuất Giá trị từ Tài liệu JSON

Trong các ví dụ trước, tôi đã truyền trực tiếp từng giá trị cho hàm dưới dạng một ký tự.

Chúng ta có thể kết hợp JSON_TYPE() với các chức năng khác, chẳng hạn như JSON_EXTRACT() để tìm ra loại giá trị trong tài liệu JSON lớn hơn. Dưới đây là một ví dụ về việc trích xuất một giá trị từ tài liệu JSON để tìm ra loại của nó:

SET @json = '
    { 
        "name" : "Wag", 
        "scores" : [8, 0, 9] 
    }
';

SELECT 
    JSON_TYPE(JSON_EXTRACT(@json, '$.name')) AS Result;

Kết quả:

+--------+
| Result |
+--------+
| STRING |
+--------+

Dưới đây là một ví dụ khác trả về nhiều loại hơn:

SET @json = '
    { 
        "name" : "Wag", 
        "scores" : [8, 0, 9],
        "weight" : 10.50,
        "height" : null,
        "age" : 4
    }
';

SELECT 
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.name')
        ) AS a,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.scores')
        ) AS b,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.scores[0]')
        ) AS c,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.weight')
        ) AS d,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.height')
        ) AS e,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.age')
        ) AS f;

Kết quả:

+--------+-------+---------+--------+------+---------+
| a      | b     | c       | d      | e    | f       |
+--------+-------+---------+--------+------+---------+
| STRING | ARRAY | INTEGER | DOUBLE | NULL | INTEGER |
+--------+-------+---------+--------+------+---------+

Đối số rỗng

Nếu đối số là null , rồi đến null được trả lại.

SELECT JSON_TYPE(null);

Kết quả:

+-----------------+
| JSON_TYPE(null) |
+-----------------+
| NULL            |
+-----------------+

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

Gọi JSON_TYPE() không có đối số dẫn đến lỗi:

SELECT JSON_TYPE();

Kết quả:

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

Điều này cũng tương tự khi quá nhiều đối số được truyền:

SELECT JSON_TYPE(1, 2);

Kết quả:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 cách nối chuỗi và số trong MariaDB

  2. MariaDB CURRENT_TIMESTAMP () Giải thích

  3. Sử dụng MyRocks Storage Engine với MariaDB Server

  4. Cách TIME () hoạt động trong MariaDB

  5. Cách hoạt động của COLLATION () trong MariaDB