使用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功能。

相关推荐
权^1 小时前
MySQL--聚合查询、联合查询、子查询、合并查询(上万字超详解!!!)
大数据·数据库·学习·mysql
万事大吉CC5 小时前
mysql单表查询·3
数据库·mysql
苹果醋310 小时前
大模型实战--FastChat一行代码实现部署和各个组件详解
java·运维·spring boot·mysql·nginx
ZhongruiRao12 小时前
Springboot+PostgreSQL+MybatisPlus存储JSON或List、数组(Array)数据
spring boot·postgresql·json
华农第一蒟蒻13 小时前
Java中JWT(JSON Web Token)的运用
java·前端·spring boot·json·token
计算机学姐13 小时前
基于SpringBoot+Vue的高校运动会管理系统
java·vue.js·spring boot·后端·mysql·intellij-idea·mybatis
-XWB-13 小时前
【MySQL】数据目录迁移
数据库·mysql
BD_Marathon14 小时前
设置hive本地模式
数据仓库·hive·hadoop
Data 31714 小时前
Hive数仓操作(十一)
大数据·数据库·数据仓库·hive·hadoop
胡耀超14 小时前
知识图谱入门——8: KG开发常见数据格式:OWL、RDF、XML、GraphML、JSON、CSV。
xml·json·知识图谱·csv·owl·graphml·gml