Trong MariaDB, JSON_UNQUOTE()
là một hàm tích hợp để loại bỏ dấu ngoặc kép khỏi giá trị JSON. Nói cách khác, nó “bỏ dấu ngoặc kép” một giá trị JSON.
Cú pháp
Cú pháp như sau:
JSON_UNQUOTE(val)
Ví dụ
Đây là một ví dụ để chứng minh.
SELECT JSON_UNQUOTE('"Eggs"');
Kết quả:
+------------------------+ | JSON_UNQUOTE('"Eggs"') | +------------------------+ | Eggs | +------------------------+
Ký tự thoát
Nếu giá trị chứa ký tự gạch chéo ngược (\
), nó thường bị bỏ qua. Tuy nhiên, một số chuỗi nhất định liên quan đến dấu gạch chéo ngược có thể có ý nghĩa đặc biệt và có thể ảnh hưởng đến kết quả của JSON_UNQUOTE()
.
Điều này sẽ phụ thuộc vào việc chế độ SQL có được đặt thành NO_BACKSLASH_ESCAPES
hay không . Khi chế độ SQL được đặt thành NO_BACKSLASH_ESCAPES
, điều này sẽ vô hiệu hóa việc sử dụng ký tự gạch chéo ngược làm ký tự thoát trong chuỗi, làm cho nó tương đương với một ký tự bình thường.
Nếu không, các chuỗi sau sẽ đúng:
Trình tự thoát | Ký tự |
---|---|
\" | Dấu ngoặc kép (" ) |
\b | Dấu gạch chéo ngược |
\f | Nguồn cấp dữ liệu định dạng |
\n | Dòng mới (nguồn cấp dữ liệu dòng) |
\r | Trả hàng |
\t | Tab |
\\ | Dấu gạch chéo ngược (\ ) |
\uXXXX | UTF-8 byte cho giá trị Unicode XXXX |
Ví dụ:
SELECT JSON_UNQUOTE('Feeling\tGood');
Kết quả:
+-------------------------------+ | JSON_UNQUOTE('Feeling\tGood') | +-------------------------------+ | Feeling Good | +-------------------------------+
Ở đây, tôi đã sử dụng \t
để thêm một ký tự tab trong chuỗi.
Nếu tôi đặt chế độ SQL thành NO_BACKSLASH_ESCAPES
, trình tự không có ý nghĩa đặc biệt và trình tự nghĩa đen được đưa vào đầu ra mà không cần giải thích:
SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';
SELECT JSON_UNQUOTE('Feeling\tGood');
Kết quả:
+-------------------------------+ | JSON_UNQUOTE('Feeling\tGood') | +-------------------------------+ | Feeling\tGood | +-------------------------------+
Đối số rỗng
Nếu đối số là NULL
, kết quả là NULL
:
SELECT JSON_UNQUOTE(null);
Kết quả:
+--------------------+ | JSON_UNQUOTE(null) | +--------------------+ | NULL | +--------------------+
Đếm tham số không chính xác
Đang gọi JSON_UNQUOTE()
không có đối số dẫn đến lỗi:
SELECT JSON_UNQUOTE();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'
Điều này cũng tương tự khi bạn cung cấp quá nhiều đối số:
SELECT JSON_UNQUOTE('a', 'b');
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'