简介
JSON_EXTRACT是一种用于提取JSON数据中特定字段值的函数。它是在一些数据库系统(如MySQL、PostgreSQL等)或编程语言的JSON库中提供的。
JSON_EXTRACT函数的作用是根据指定的路径,从JSON数据中提取相应的字段值。路径可以是简单的键名,也可以是多层次的嵌套键名。
用法
例如,假设有以下JSON数据:
{
"name": "John",
"age": 30,
"address": {
"city": "New York",
"country": "USA"
}
}
如果我们想要获取address字段的值,可以使用以下查询:
SELECT JSON_EXTRACT(person, '$.address');
结果是:
{"city": "New York", "country": "USA"}
如果我们想要获取address.country的值,可以使用以下查询:
SELECT JSON_EXTRACT(person, '$.address.country');
结果是:
"USA"
JSON_EXTRACT作为查询条件
假设有一个名为orders的表,其中包含一个名为details的JSON字段,内容如下:
+----+---------------------------------------------------------------------+
| id | details |
+----+---------------------------------------------------------------------+
| 1 | {"product": "book", "price": 10.99} |
| 2 | {"product": "pen", "quantity": 12} |
| 3 | {"product": "paper", "price": 0.99} |
+----+---------------------------------------------------------------------+
如果我们想查询价格大于10的产品,可以使用以下查询:
SELECT * FROM orders WHERE JSON_EXTRACT(details, "$.price") > 10;
结果是:
+----+----------------------------------+
| id | details |
+----+----------------------------------+
| 1 | {"product": "book", "price": 10.99} |
+----+----------------------------------+
此外,如果想要查询产品为"pen"的所有订单,可以使用以下查询:
SELECT * FROM orders WHERE JSON_EXTRACT(details, "$.product") = 'pen';
结果是:
+----+----------------------------------+
| id | details |
+----+----------------------------------+
| 1 | {"product": "pen", "quantity": 12} |
+----+----------------------------------+