JSON_UNQUOTE
时间: 2023-08-04 21:07:39 浏览: 251
`JSON_UNQUOTE`是MySQL中的一个JSON函数,用于去除JSON字符串的引号。它的作用是将一个带引号的JSON字符串去除引号,并返回一个不带引号的JSON字符串。
在MySQL中,当你使用`JSON_EXTRACT`、`JSON_UNQUOTE`和其他处理JSON的函数时,有时会返回带引号的JSON字符串。如果你需要去除这些引号并得到一个纯粹的JSON字符串,可以使用`JSON_UNQUOTE`函数。
以下是一个示例:
```sql
SELECT JSON_UNQUOTE('{"name": "John"}') AS unquoted_json;
```
这个查询将返回一个不带引号的JSON字符串:
```
{ "name": "John" }
```
请注意,`JSON_UNQUOTE`函数只能去除外层的引号,无法去除嵌套在JSON字符串内部的引号。
相关问题
json_unquote
json_unquote是MySQL中的一个函数,用于解析JSON字符串并返回解析后的值。它的作用是去除JSON字符串中的引号,并将其转换为相应的数据类型。
例如,如果有一个JSON字符串'{"name": "John", "age": 25}',使用json_unquote函数可以将其解析为一个JSON对象,其中"name"的值为"John","age"的值为25。
json_unquote函数的语法如下:
json_unquote(json_val)
其中,json_val是要解析的JSON字符串。
需要注意的是,json_unquote函数只能解析合法的JSON字符串,否则会返回NULL。此外,如果JSON字符串中包含特殊字符或转义字符,需要进行适当的处理。
简化sql: select JSON_UNQUOTE(JSON_EXTRACT(woo.attachment, '$.transformerObjList')) as transformerObjList from workflow_order woo where workflow_order_id in ( select c.workflow_order_id from ( select concat( JSON_UNQUOTE(JSON_EXTRACT(wo.attachment, '$.province')), JSON_UNQUOTE(JSON_EXTRACT(wo.attachment, '$.city')), JSON_UNQUOTE(JSON_EXTRACT(wo.attachment, '$.county')), JSON_UNQUOTE(JSON_EXTRACT(wo.attachment, '$.town')), JSON_UNQUOTE(JSON_EXTRACT(wo.attachment, '$.village')) ) as address , JSON_UNQUOTE(JSON_EXTRACT(wo.attachment, '$.dataType')) as dataType ,wo.workflow_order_id from workflow_order as wo ) as c where c.dataType = 1587434126787240000 and c.address = '江苏省无锡市宜兴市A镇8村'
简化后的 SQL 查询语句如下:
```
SELECT JSON_UNQUOTE(JSON_EXTRACT(attachment, '$.transformerObjList')) AS transformerObjList
FROM workflow_order
WHERE workflow_order_id IN (
SELECT workflow_order_id
FROM (
SELECT CONCAT(
JSON_UNQUOTE(JSON_EXTRACT(attachment, '$.province')),
JSON_UNQUOTE(JSON_EXTRACT(attachment, '$.city')),
JSON_UNQUOTE(JSON_EXTRACT(attachment, '$.county')),
JSON_UNQUOTE(JSON_EXTRACT(attachment, '$.town')),
JSON_UNQUOTE(JSON_EXTRACT(attachment, '$.village'))
) AS address,
JSON_UNQUOTE(JSON_EXTRACT(attachment, '$.dataType')) AS dataType,
workflow_order_id
FROM workflow_order
) AS c
WHERE c.dataType = 1587434126787240000 AND c.address = '江苏省无锡市宜兴市A镇8村'
)
```
阅读全文