JSON_EXTRACT查出来的数据带有双引号
时间: 2023-12-08 11:03:16 浏览: 34
`JSON_EXTRACT`函数返回的结果是一个JSON格式的字符串,如果字符串中包含双引号,那么在输出时会自动添加转义字符`\`来转义双引号,以保证输出的字符串是一个合法的JSON字符串。
如果你想去掉这些转义字符,可以使用`REPLACE`函数将转义字符去掉,例如:
```
SELECT REPLACE(JSON_EXTRACT('{"name": "John", "age": 30}', '$.name'), '\"', '');
```
这个语句将输出字符串`John`,其中`\"`被替换成了空字符。
注意,如果去掉转义字符后得到的字符串不是一个合法的JSON字符串,那么在使用该字符串进行JSON解析时可能会出现错误,因此需要根据实际情况进行判断和处理。
相关问题
DATE_FORMAT里面是JSON_EXTRACT查不出数据
如果你使用`DATE_FORMAT`函数和`JSON_EXTRACT`函数组合查询时查不出数据,可能有以下几种情况:
1. `JSON_EXTRACT`函数提取的日期格式不是`YYYY-MM-DD`,导致日期转换失败,可以尝试查看`JSON_EXTRACT`函数提取的日期格式。
2. `DATE_FORMAT`函数格式化的日期格式与`JSON_EXTRACT`函数提取的日期格式不一致,导致查询失败。例如,如果`JSON_EXTRACT`函数提取的日期格式为`YYYY/MM/DD`,则可以使用以下语句进行查询:
```
SELECT * FROM table WHERE DATE_FORMAT(str_to_date(JSON_EXTRACT(json_col, '$.date'), '%Y/%m/%d'), '%Y-%m-%d') = '2021-11-01';
```
在这个语句中,`JSON_EXTRACT`函数提取的日期格式为`%Y/%m/%d`,`str_to_date`函数将提取的日期字符串转换为日期类型,`DATE_FORMAT`函数将日期格式化为`%Y-%m-%d`格式,用于和查询条件进行比较。
以上是一些可能导致查询失败的原因,你可以根据实际情况进行调整。
Mysql使用函数json_extract处理Json类型数据
在 MySQL 中,您可以使用函数 `json_extract` 处理 JSON 类型的数据。该函数接受两个参数:第一个参数是包含 JSON 数据的列,第二个参数是用于提取 JSON 数据的路径表达式。
例如,假设有一张名为 `mytable` 的表格,其中有一个名为 `mycolumn` 的列包含以下 JSON 数据:
```json
{
"name": "John Smith",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA",
"zip": "12345"
}
}
```
要提取此 JSON 数据中的 `name` 字段,您可以使用以下查询:
```sql
SELECT json_extract(mycolumn, '$.name') FROM mytable;
```
此查询将返回 `John Smith`。要提取地址信息,您可以使用以下查询:
```sql
SELECT json_extract(mycolumn, '$.address') FROM mytable;
```
此查询将返回以下 JSON 数据:
```json
{
"street": "123 Main St",
"city": "Anytown",
"state": "CA",
"zip": "12345"
}
```
希望这可以帮助您开始使用 `json_extract` 函数处理 MySQL 中的 JSON 数据。