In MariaDB, JSON_UNQUOTE() is a built-in function that removes quotes from a JSON value. In other words, it “unquotes” a JSON value.
Syntax
The syntax goes like this:
JSON_UNQUOTE(val)
Example
Here’s an example to demonstrate.
SELECT JSON_UNQUOTE('"Eggs"');
Result:
+------------------------+
| JSON_UNQUOTE('"Eggs"') |
+------------------------+
| Eggs |
+------------------------+
Escape Characters
If the value contains a backslash character (\), it’s usually ignored. However, certain sequences involving the backslash can have special meaning, and can affect the outcome of JSON_UNQUOTE().
This will depend on whether or not SQL mode is set to NO_BACKSLASH_ESCAPES. When SQL mode is set to NO_BACKSLASH_ESCAPES, this disables using the backslash character as an escape character within strings, making it equivalent to an ordinary character.
Otherwise, the following sequences will hold true:
| Escape sequence | Character |
|---|---|
\" | Double quote (") |
\b | Backslash |
\f | Formfeed |
\n | Newline (linefeed) |
\r | Carriage return |
\t | Tab |
\\ | Backslash (\) |
\uXXXX | UTF-8 bytes for Unicode value XXXX |
Example:
SELECT JSON_UNQUOTE('Feeling\tGood');
Result:
+-------------------------------+
| JSON_UNQUOTE('Feeling\tGood') |
+-------------------------------+
| Feeling Good |
+-------------------------------+
Here, I used the \t sequence to add a tab character within the string.
If I set SQL mode to NO_BACKSLASH_ESCAPES, the sequence has no special meaning, and the literal sequence is included in the output without interpretation:
SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';
SELECT JSON_UNQUOTE('Feeling\tGood');
Result:
+-------------------------------+
| JSON_UNQUOTE('Feeling\tGood') |
+-------------------------------+
| Feeling\tGood |
+-------------------------------+
Null Arguments
If the argument is NULL, the result is NULL:
SELECT JSON_UNQUOTE(null);
Result:
+--------------------+ | JSON_UNQUOTE(null) | +--------------------+ | NULL | +--------------------+
Incorrect Parameter Count
Calling JSON_UNQUOTE() without an argument results in an error:
SELECT JSON_UNQUOTE();
Result:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'
It’s the same when you provide too many arguments:
SELECT JSON_UNQUOTE('a', 'b');
Result:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'