mysql JSON_EXTRACT JSON_UNQUOTE 函数

在处理mysql 有存储的json字段,需要提取时候发现JSON_EXTRACT函数,发现此函数提取后会带有引号,组合使用JSON_UNQUOTE 可去掉引号!

JSON_EXTRACT 函数概述

JSON_EXTRACT是MySQL中用于从JSON文档中提取数据的函数,语法为JSON_EXTRACT(json_doc, path[, path]...)。它支持JSON路径表达式,返回匹配路径的数据。MySQL 5.7及以上版本支持该函数。

基本语法

JSON_EXTRACT(json_doc, path)
  • json_doc: 包含JSON数据的列或字符串。
  • path: JSON路径表达式,如$.key$[index]

路径表达式示例

提取JSON对象中的值:

SELECT JSON_EXTRACT('{"name": "John", "age": 30}', '$.name'); 
-- 返回: "John"

提取JSON数组中的元素

SELECT JSON_EXTRACT('["apple", "banana", "cherry"]', '$[1]');
-- 返回: "banana"

提取嵌套数据

对于嵌套JSON结构,路径表达式可多层访问:

SELECT JSON_EXTRACT('{"person": {"name": "Alice", "age": 25}}', '$.person.name');
-- 返回: "Alice"

提取多个路径

函数支持同时提取多个路径,返回结果以JSON数组形式呈现:

SELECT JSON_EXTRACT('{"a": 1, "b": 2}', '$.a', '$.b');
-- 返回: [1, 2]

简化写法:->操作符

MySQL提供了->操作符作为JSON_EXTRACT的简写:

SELECT column_name->'$.key' FROM table_name;
-- 等效于: JSON_EXTRACT(column_name, '$.key')

注意事项

  • 路径表达式区分大小写。
  • 路径不存在时返回NULL
  • 提取的数据类型与JSON文档一致(如字符串带引号)。
  • 需确保json_doc为有效JSON格式,否则可能报错。

实际应用示例

假设表users有JSON列profile

{"name": "Tom","contacts": {"email": "tom@example.com","phone": "123456789"}
}

查询电子邮件:

SELECT JSON_EXTRACT(profile, '$.contacts.email') FROM users;
-- 或使用简写:
SELECT profile->'$.contacts.email' FROM users;

JSON_UNQUOTE结合使用

若需去除提取结果的引号(如字符串类型),可搭配JSON_UNQUOTE

SELECT JSON_UNQUOTE(JSON_EXTRACT('{"name": "John"}', '$.name'));
-- 返回: John(不带引号)

该函数在MySQL的JSON数据处理中广泛用于字段提取和嵌套查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85697.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Prompt:更好的提示与迭代

欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。 目录 1 引言1.1 引用资料 2 更好的提示2.1 情景学习IC…

SQL85 统计每个产品的销售情况

SQL85 统计每个产品的销售情况 好复杂,俺不中了。。 问题描述 本查询旨在分析2023年各产品的销售情况,包括: 每个产品的总销售额、单价、总销量和月均销售额每个产品销量最高的月份及其销量每个产品购买量最高的客户年龄段 解题思路 1. 基…

Django MAC Pycharm 命令行建立项目,注册app运行失败,找不到views导入包

相对复杂的情况 你没有直接在Pycharm中建立一个Django项目,而是直接建立某个项目或者打开某个项目,使用命令后安装Django后,使用命令后建立了Django项目,尽管你的目录尽可能干净,只有Django项目,但是这仍然…

窄带和宽带谁略谁优

窄带(Narrowband)与宽带(Broadband)深度对比 ——涵盖 优缺点、适用场景、调制方式 1. 窄带(Narrowband) 1.1 核心特点 带宽:≤25 kHz(典型值,如NB-IoT仅占用180kHz&a…

李佳琦直播间618收官:6成销量为国货,多品类增超25%

618大促迎来收官,作为电商消费的关键风向标,李佳琦直播间生动呈现了当下消费市场的多元趋势。 据「TMT星球」了解,在长达近40天的大促里,李佳琦直播间不仅延续过往的高人气与强带货力,更在高质价比产品、高质量服务保…

c++ noexcept关键字

noexcept 是 C11 中引入的一个关键字,用来标记函数声明,表示该函数不会抛出异常。它可以用于函数、函数指针、Lambda 表达式等。使用 noexcept 可以帮助编译器进行优化,提高代码的执行效率,并且让程序在处理异常时更加明确。 1. …

腾讯混元3D制作简单模型教程-2

以下是腾讯混元3D制作简单模型的详细教程,整合最新版本特性(截至2025年6月),操作门槛低且无需专业基础: 🖥 一、在线生成(最快30秒完成) ‌访问平台‌ 打开 腾讯混元3D创作引擎官网…

阿里云申请ssl证书,同时需要绑定域名,下载nginx压缩包,nginx添加证书路径即可

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、ssl是什么?二、登录阿里云三、图片教程四、添加域名前缀(www)如:www.baidu.com总结 一、ssl是什么? …

额度互动促进金融健康,蚂蚁消金创新智能实时交互式风控系统

“蚂蚁消金希望利用交互式智能风控技术,挖掘年轻人努力成长的证明”。6月19日,在上海举行的2025中国国际金融展上,蚂蚁消金首席风险官林嘉南分享了,如何将大模型技术应用在交互式智能风控领域,从而促进额度的互动性&am…

SAP-ABAP:LOOP ... ASSIGNING高效处理内表数据详解

在ABAP中&#xff0c;LOOP ... ASSIGNING 是高效处理内表数据的关键技术&#xff0c;它通过字段符号(field symbol) 直接访问内表内存地址&#xff0c;避免数据副本创建。以下是详细用法指南&#xff1a; 一、基础语法结构 FIELD-SYMBOLS: <fs_line> TYPE any. " …

Tomcat本地部署Maven Java Web项目

接下来是在widows部署maven javaweb 首先要配置tomcat&#xff0c;我这里是联合项目&#xff0c;需要配置多个tomcat 选择每个对应的war包 这里的项目名和端口号要改&#xff0c;否则多个项目启动会因为端口号占用无法启动 Tomcat运行项目 打包 在右边的Maven视图里面找到…

golang--具名返回值、匿名返回值与 defer 语句之间的关系,以及 panic 对它们的影响

好的&#xff0c;我们来详细探讨 Go 语言中具名返回值、匿名返回值与 defer 语句之间的关系&#xff0c;以及 panic 对它们的影响。这是 Go 错误处理和资源管理中的核心机制。 核心概念 具名返回值 (Named Return Values): 在函数签名中声明返回变量名。例如&#xff1a;fun…

FFmpeg 超级详细安装与配置教程(Windows 系统)

1. 前言 FFmpeg 是一个用于处理视频、音频等多媒体文件的开源工具包。它支持几乎所有的多媒体格式转换、剪辑和编辑&#xff0c;是开发者和多媒体工作者必备的工具。本文详细讲解如何在 Windows 系统上安装 FFmpeg 并进行基本配置。 2. 下载 FFmpeg 安装包 打开 Download FFmp…

Pytorch中gather()函数详解和实战示例

在 PyTorch 中&#xff0c;torch.gather() 是一个非常实用的张量操作函数&#xff0c;主要用于根据索引从输入张量中选择特定位置的值。它常用于注意力机制、序列处理等场景。 函数定义 torch.gather(input, dim, index) → Tensorinput&#xff1a;待提取数据的张量。dim&…

uniapp 微信小程序在线引入字体图标

在线引入字体图标&#xff0c;出现体验版&#xff0c;真机调试字体图标不出来&#xff0c;模拟器上是好的 由于字体图标和小程序域名不在同一个&#xff0c;所以出现了跨域问题&#xff0c;将字体图标文件放到小程序同一个域名下就好了

macOS版的节点小宝上架苹果APP Store了

前言 前段时间很多小伙伴按照小白的教程在飞牛NAS部署了节点小宝之后&#xff0c;Windows的小伙伴玩得不亦乐乎&#xff01; 反观macOS用户……因为没有#macOS版本的节点小宝&#xff0c;就算是在飞牛NAS上部署了节点小宝&#xff0c;却一点也开心不起来。 毕竟iOS版本的节点…

tensor向量按任意维度进行切片、拆分、组合

torch.index_select(input_tensor, 切片维度, 切片索引) 注意&#xff1a;切完之后&#xff0c;转onnx时会生成Gather节点&#xff1b; torch自带切片操作&#xff1a; start : end : step&#xff1a; 范围前闭后开&#xff0c;将其放在哪个维度上&#xff0c;就对那个维度…

(八)Linux进程程序替换

1 进程替换 进程替换是为了让程序能在不创建新进程的情况下&#xff0c;让父进程和子进程执行不同的代码&#xff0c;以实现控制清晰、执行高效的程序调度机制。 1.1 先看效果 #include <stdio.h> #include <unistd.h> int main() {printf("before:I am a p…

支持 TDengine 的数据库管理工具—qStudio

qStudio qStudio 是一款免费的多平台 SQL 数据分析工具&#xff0c;可以轻松浏览数据库中的表、变量、函数和配置设置。最新版本 qStudio 内嵌支持 TDengine。 前置条件​ 使用 qStudio 连接 TDengine 需要以下几方面的准备工作。 安装 qStudio。qStudio 支持主流操作系统包…

破解 VMP+OLLVM 混淆:通过 Hook jstring 快速定位加密算法入口

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ VMP 壳 OLLVM 的加密算法 某电商APP的加密算法经过dex脱壳分析&#xff0c;找到参数加密的方法在 DuHelper.doWork 中 package com.shizhuang.duapp.common…