# **JSON_UNQUOTE()**

## **函数说明**

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

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

## **语法结构**

```sql
select JSON_UNQUOTE(string_value);
```

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

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

## **示例**

```text
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)
```
