Skip to content

JSON_UNQUOTE()

函数说明

JSON_UNQUOTE() 函数用于从一个 JSON 字符串中提取一个没有引号的 JSON 值,并将其作为字符串返回。

具体来说,JSON_UNQUOTE() 函数需要一个 JSON 字符串作为输入,然后从中提取一个 JSON 值,并将其作为字符串返回。如果输入的 JSON 字符串不包含有效的 JSON 值或参数为 NULL,则函数返回 NULL。如果参数为 NULL,则返回 NULL。如果值以双引号开始和结束,但不是有效的 JSON 字符串文字,则会发生错误。

语法结构

select JSON_UNQUOTE(string_value);

在字符串中,某些序列具有特殊含义,这些序列都以反斜杠 () 开始,称为转义字符,规则如下表。对于所有其他转义序列,反斜杠将被忽略。也就是说,转义字符被解释为没有转义。例如,\x 就是 x。这些序列区分大小写。例如,\b 被解释为退格,而 \B 被解释为 B。

转义序列 所代表的字符
\" 双引号 (")
\b 退格符
\f 换页符
\n 换行符
\r 回车符
\t 制表符
\ 反斜杠 ()
\uXXXX Unicode 值为 XXXX 的 UTF-8 字节

示例

mysql> SET @j = '"abc"';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @j, JSON_UNQUOTE(@j);
+-------+------------------+
| @j    | json_unquote(@j) |
+-------+------------------+
| "abc" | abc              |
+-------+------------------+
1 row in set (0.00 sec)

mysql> SET @j = '[1, 2, 3]';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @j, JSON_UNQUOTE(@j);
+-----------+------------------+
| @j        | json_unquote(@j) |
+-----------+------------------+
| [1, 2, 3] | [1, 2, 3]        |
+-----------+------------------+
1 row in set (0.00 sec)

mysql> SELECT JSON_UNQUOTE('"\\t\\u0032"');
+----------------------------+
| json_unquote("\\t\\u0032") |
+----------------------------+
|       2                         |
+----------------------------+
1 row in set (0.00 sec)