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'