当前位置: 首页 > news >正文

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

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

  • 1. 使用场景
  • 2. 来自ChatGPT的`JSON_EXTRACT`使用说明

1. 使用场景

  1. 如果你有一张表table,其中有一个字段attrs,并且该字段是一个json,其中又包括totalPrice、skuPrice、couponPrice三个字段;
  2. 而你现在只想查出数据库中skuPrice字段为0的记录;
  3. 那么这条SQL该怎么写呢?
  4. 如果是MySQL,可以使用JSON_EXTRACT,具体SQL语句如下:
    SELECT * FROM table
    WHERE JSON_EXTRACT(attrs, '$.skuPrice') = 0;
    
  5. 如果是HiveSQL,可以使用get_json_object,具体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文档:

{"employee": {"name": "John Doe","age": 30,"departments": ["HR", "IT"]}
}

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

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

相关文章:

  • Java集合框架详解:深入探讨Java中的集合框架
  • 【栈】Leetcode 71. 简化路径【中等】
  • 美团Java社招面试题真题,最新面试题
  • Srping 历史
  • ROS学习笔记(16):夹缝循迹
  • 类 和 对象(二)
  • 分享10个国内可以使用的GPT中文网站
  • 工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端
  • 四川汇聚荣科技有限公司好不好?
  • Day6 LeedCode: 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
  • 关于软件设计模式的理解
  • HQL面试题练习 —— 合并数据
  • [Python]pyenv 环境配置
  • Selenium 库的爬虫实现
  • Host头攻击-使用加密和身份验证机制
  • 【Linux系统编程】快速查找errno错误码信息
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • java小心机(3)| 浅析finalize()
  • MQ框架的比较
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • QQ浏览器x5内核的兼容性问题
  • ViewService——一种保证客户端与服务端同步的方法
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue的全局变量和全局拦截请求器
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 如何编写一个可升级的智能合约
  • 如何利用MongoDB打造TOP榜小程序
  • # Maven错误Error executing Maven
  • #传输# #传输数据判断#
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #知识分享#笔记#学习方法
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)ObjectiveC 深浅拷贝学习
  • .gitignore
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net 怎么循环得到数组里的值_关于js数组
  • .Net多线程Threading相关详解
  • .net下的富文本编辑器FCKeditor的配置方法
  • .考试倒计时43天!来提分啦!
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @vue/cli 3.x+引入jQuery
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [AAuto]给百宝箱增加娱乐功能
  • [Angular] 笔记 21:@ViewChild
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [BJDCTF2020]EzPHP1
  • [BSidesCF 2019]Kookie1