Collections:
JSON_UNQUOTE() - Unquoting JSON String
How to convert a JSON (JavaScript Object Notation) quoted string into a regular character string using the JSON_UNQUOTE() function?
✍: FYIcenter.com
JSON_UNQUOTE(json) is a MySQL built-in function that
converts a JSON string into a regular character string,
by removing the enclosing double-quotes and restoring
any escaped characters within the string.
For example:
SELECT JSON_UNQUOTE('"null"'); -- +------------------------+ -- | JSON_UNQUOTE('"null"') | -- +------------------------+ -- | null | -- +------------------------+ SELECT JSON_QUOTE('"null"'), JSON_UNQUOTE(JSON_QUOTE('"null"')); -- +----------------------+------------------------------------+ -- | JSON_QUOTE('"null"') | JSON_UNQUOTE(JSON_QUOTE('"null"')) | -- +----------------------+------------------------------------+ -- | "\"null\"" | "null" | -- +----------------------+------------------------------------+
JSON uses the backslash "\" as the escape character. And "\" itself needs to be quoted. But "\" is also the escape character for MySQL string literals. So entering a "\" into a JSON string in MySQL statement becomes very tricky as shown below:
SELECT '"1\\t\\u0032"', JSON_UNQUOTE('"1\\t\\u0032"'); -- +-------------+-------------------------------+ -- | "1\t\u0032" | JSON_UNQUOTE('"1\\t\\u0032"') | -- +-------------+-------------------------------+ -- | "1\t\u0032" | 1 2 | -- +-------------+-------------------------------+ SELECT '"C:\Windows"', JSON_UNQUOTE('"C:\Windows"'); -- +-------------+------------------------------+ -- | "C:Windows" | JSON_UNQUOTE('"C:\Windows"') | -- +-------------+------------------------------+ -- | "C:Windows" | C:Windows | -- +-------------+------------------------------+ SELECT '"C:\\\\Windows"', JSON_UNQUOTE('"C:\\\\Windows"'); -- +---------------+---------------------------------+ -- | "C:\\Windows" | JSON_UNQUOTE('"C:\\\\Windows"') | -- +---------------+---------------------------------+ -- | "C:\\Windows" | C:\Windows | -- +---------------+---------------------------------+ SELECT JSON_UNQUOTE('"C:\\Windows"'); ERROR 3141 (22032): Invalid JSON text in argument 1 to function json_unquote: "Invalid escape character in string." at position 3.
Note that if the argument is not double quoted string, JSON_UNQUOTE() returns it as is without any changes.
SELECT JSON_UNQUOTE('null'), JSON_UNQUOTE('"null'); -- +----------------------+-----------------------+ -- | JSON_UNQUOTE('null') | JSON_UNQUOTE('"null') | -- +----------------------+-----------------------+ -- | null | "null | -- +----------------------+-----------------------+ SELECT 'C:\Windows', JSON_UNQUOTE('C:\Windows'); -- +-----------+----------------------------+ -- | C:Windows | JSON_UNQUOTE('C:\Windows') | -- +-----------+----------------------------+ -- | C:Windows | C:Windows | -- +-----------+----------------------------+ 1 row in set (0.00 sec) SELECT 'C:\\Windows', JSON_UNQUOTE('C:\\Windows'); -- +------------+-----------------------------+ -- | C:\Windows | JSON_UNQUOTE('C:\\Windows') | -- +------------+-----------------------------+ -- | C:\Windows | C:\Windows | -- +------------+-----------------------------+ 1 row in set (0.00 sec) SELECT 'C:\\\Windows', JSON_UNQUOTE('C:\\\Windows'); -- +------------+------------------------------+ -- | C:\Windows | JSON_UNQUOTE('C:\\\Windows') | -- +------------+------------------------------+ -- | C:\Windows | C:\Windows | -- +------------+------------------------------+ 1 row in set (0.00 sec) SELECT 'C:\\\\Windows', JSON_UNQUOTE('C:\\\\Windows'); -- +-------------+-------------------------------+ -- | C:\\Windows | JSON_UNQUOTE('C:\\\\Windows') | -- +-------------+-------------------------------+ -- | C:\\Windows | C:\\Windows | -- +-------------+-------------------------------+ 1 row in set (0.00 sec) SELECT 'C:\\\\\Windows', JSON_UNQUOTE('C:\\\\\Windows'); -- +-------------+--------------------------------+ -- | C:\\Windows | JSON_UNQUOTE('C:\\\\\Windows') | -- +-------------+--------------------------------+ -- | C:\\Windows | C:\\Windows | -- +-------------+--------------------------------+
Reference information of the JSON_UNQUOTE() function:
JSON_UNQUOTE(json): str Converts a JSON string into a regular character string, by removing the enclosing double-quotes and restoring any escaped characters within the string. If the argument is not double quoted string, it returns argument as is without any changes. Arguments, return value and availability: json: Required. The string or JSON string be converted. str: Return value. The converted regular character string. Available since MySQL 5.7.
⇒ JSON_VALID() - Validating JSON Value
⇐ JSON_TYPE() - Detecting Type of JSON Value
2025-03-12, 936🔥, 0💬
Popular Posts:
How To Drop an Index in Oracle? If you don't need an existing index any more, you should delete it w...
What are single-byte character string data types supported in SQL Server Transact-SQL? Single-byte c...
How To Calculate DATETIME Value Differences Using the DATEDIFF() Function in SQL Server Transact-SQL...
How To Break Query Output into Pages in MySQL? If you have a query that returns hundreds of rows, an...
Where to find SQL Server Transact-SQL language references? You can find SQL Server Transact-SQL lang...