JSON_EXTRACT使用举例
时间: 2023-08-06 18:02:06 浏览: 46
当使用JSON_EXTRACT函数时,您可以提供一个JSON对象一个JSON路径作为参数,以从对象中提取特定的值。以下一个使用JSON_EXTRACT的示例:
设我们有以下JSON对象:
{
person": {
"name": "John",
"age": 30,
"address": {
"street":123 Main St",
"city": "New York",
"country": "USA"
}
}
}
我们想要从上述JSON对象中提取"street"字段的值。我们可以使用JSON_EXTRACT函数来实现这一点。以下是使用JSON_EXTRACT函数的示例SQL查询语句:
SELECT JSON_EXTRACT(json_object, '$.person.address.street') AS street
FROM your_table;
在上面的查询中,"json_object" 是包含我们的JSON对象的列名,"$.person.address.street" 是我们想要提取的JSON路径。查询的结果将返回"street"字段的值,即"123 Main St"。
请注意,具体的JSON路径语法可能因不同的数据库系统而有所差异。上述示例使用的是MySQL数据库的语法。在其他数据库系统中,可能会有一些变化。因此,请根据您正在使用的数据库系统来适当调整上述示例。
相关问题
举例说明json_extract用法
当使用 `json_extract` 函数时,你可以通过提供一个 JSON 路径来从 JSON 字符串中提取特定的值。以下是一个示例:
假设我们有以下 JSON 字符串:
```json
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY"
},
"pets": [
{
"name": "Fluffy",
"type": "cat"
},
{
"name": "Buddy",
"type": "dog"
}
]
}
```
如果我们想要提取 `"name"` 的值,我们可以使用以下 SQL 查询:
```sql
SELECT json_extract(json_data, '$.name') AS name FROM table_name;
```
其中,`json_data` 是包含上述 JSON 字符串的列名,`table_name` 是包含 `json_data` 列的表名。
这将返回一个包含名为 `"name"` 的列的结果集,该列包含从 JSON 字符串中提取的 `"name"` 的值。在上述示例中,结果集将包含一个名为 `"John"` 的行。
类似地,你也可以提取其他的 JSON 值,例如 `"age"`、`"address.city"`、`"pets[0].name"` 等等。只需在 `json_extract` 函数的第二个参数中提供正确的 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村'
)
```