使用JSON_EXTRACT匹配某个json类型字段中的某个具体字段

使用JSON_EXTRACT匹配某个json类型字段中的某个具体字段

  • [1. 使用场景](#1. 使用场景)
  • [2. 来自ChatGPT的`JSON_EXTRACT`使用说明](#2. 来自ChatGPT的JSON_EXTRACT使用说明)

1. 使用场景

  1. 如果你有一张表table,其中有一个字段attrs,并且该字段是一个json,其中又包括totalPrice、skuPrice、couponPrice三个字段;

  2. 而你现在只想查出数据库中skuPrice字段为0的记录;

  3. 那么这条SQL该怎么写呢?

  4. 如果是MySQL,可以使用JSON_EXTRACT,具体SQL语句如下:

    sql 复制代码
    SELECT * FROM table
    WHERE JSON_EXTRACT(attrs, '$.skuPrice') = 0;
  5. 如果是HiveSQL,可以使用get_json_object,具体SQL语句如下:

    sql 复制代码
    SELECT * FROM table
    WHERE get_json_object(attrs, '$.skuPrice') = 0;

2. 来自ChatGPT的JSON_EXTRACT使用说明

在MySQL中,JSON_EXTRACT是一个用于提取JSON数据中特定路径的函数。它接受两个参数:JSON文档和要提取的路径。

以下是JSON_EXTRACT函数的基本语法:
JSON_EXTRACT(json_doc, path)

  • json_doc是一个包含JSON数据的字段或表达式。
  • path是一个表示要提取的路径的字符串。

路径可以使用点号(.)来访问JSON对象的属性,也可以使用方括号([])来访问JSON数组的索引。例如,如果有以下JSON文档:

json 复制代码
{
  "employee": {
    "name": "John Doe",
    "age": 30,
    "departments": ["HR", "IT"]
  }
}

你可以使用JSON_EXTRACT函数来提取其中的值:

sql 复制代码
SELECT JSON_EXTRACT(json_doc, '$.employee.name') AS employee_name,
       JSON_EXTRACT(json_doc, '$.employee.departments[0]') AS first_department
FROM your_table;

在上面的例子中,我们使用JSON_EXTRACT函数从json_doc字段中提取了"employee"对象的"name"属性和"departments"数组的第一个元素。

另外,JSON_EXTRACT函数还支持更复杂的路径表达式,例如使用通配符*来匹配多个属性或索引。此外,还可以通过使用JSON_UNQUOTE函数来移除提取的结果中的引号,如果结果是一个字符串。

需要注意的是,JSON_EXTRACT函数在MySQL 5.7版本之后才可用,并且需要在MySQL中启用JSON功能。

相关推荐
待磨的钝刨36 分钟前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
Yaml45 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
追风林5 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
Hsu_kk7 小时前
MySQL 批量删除海量数据的几种方法
数据库·mysql
编程学无止境7 小时前
第02章 MySQL环境搭建
数据库·mysql
knight-n7 小时前
MYSQL库的操作
数据库·mysql
eternal__day9 小时前
MySQL_聚合函数&分组查询
数据库·mysql
咕哧普拉啦9 小时前
乐尚代驾十订单支付seata、rabbitmq异步消息、redisson延迟队列
java·spring boot·mysql·spring·maven·乐尚代驾·java最新项目
春哥的魔法书10 小时前
数据库基础(5) . DCL
数据库·mysql
鬼才血脉11 小时前
docker+mysql配置
mysql·adb·docker