首页 > 数据库 >MySQL的Json类型个人用法详解

MySQL的Json类型个人用法详解

时间:2023-09-04 18:04:14浏览次数:60  
标签:goods price item Json 详解 MySQL where id

前言

虽然MySQL很早就添加了Json类型,但是在业务开发过程中还是很少设计带这种类型的表。少不代表没有,当真正要对Json类型进行特定查询,修改,插入和优化等操作时,却感觉一下子想不起那些函数怎么使用。比如把json里的某个键和值作为SQL条件,修改某个键下的子键的值,其中可能会遇到数组形式的Json或者键名是字符串的数字修改异常等问题。那么,以下是小北在业务中常遇到的Json类型操作汇总了。

 

查询

1. 查询普通键

以下示例是从goods表的price字段里取出price键的值,可以依次往下取值,就是price.嵌套键名即可。

select json_extract(price, "$.price") as de from goods where id = 159540

2. 查询字符串类型的数字键

虽然以上能解决大部分取值,但有时候的json嵌套里有字符串类型的数字键名,如下图的json,要取出字段下sku键名的 "45453"键algorithm的值。

MySQL的Json类型个人用法详解_JSON

select json_extract(price, "$.sku.\"45453\".algorithm") as de from price where id = 159540

3. 查询数组类的Json指定值

以上的两种是我们常见的对象类,但当出现数组类时,就没有键名了,取值只需要指定索引即可,如下分别是查询某值和根据json的某值作为查询条件。

select JSON_EXTRACT(`crumbs`, $[1]) as one_crumbs from comment where id = 4565
select * from comment where JSON_EXTRACT(`crumbs` ,'$[1]') = 256

4. 查询Json里是否包含某个值

select * from goods_item where goods_id=10263 and JSON_CONTAINS(item_value->'$', concat(43318,''));
select * from goods_item where goods_id=10263 and JSON_CONTAINS(item_value, concat(43318,''));
select * from goods_item where goods_id=10263 and JSON_CONTAINS(item_value, concat(43318,''),'$');

5. 查询Json长度

以下的goods_img是一个数组类的Json字段,通过长度作为SQL的查询条件。

select id, stock_no, goods_img from goods_item where state = 1 and JSON_LENGTH(goods_img) < 3

更新

1. 修改Json字段下指定键的值

update price set price = json_set(price, "$.attr.\"1280\".price_old", 300) where id in (171314)

MySQL的Json类型个人用法详解_字段_02

标签:goods,price,item,Json,详解,MySQL,where,id
From: https://blog.51cto.com/u_11161174/7353801

相关文章

  • Java对象与json的转换使用的依赖是fastjson,转换的简单案例
    2023-09-04<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency>转换的简单案例packagecom.hh.json;importcom.alibaba.fastjson......
  • iOS代码加固与保护方法详解 - 提升iOS应用安全性的关键步骤
    摘要:作为一名从事iOS开发多年的技术博主,长期以来我都没有重视代码加密和加固。然而,最近了解到使用IPAGuard工具可以对iOS应用进行混淆保护,我开始重新审视iOS应用的安全性问题。本文将详细介绍如何使用IPAGuard工具进行代码加固和保护,以提高iOS应用的安全性和抵御逆向分析的风险。......
  • MySQL安装
    1.下载地址:http://dev.mysql.com/get/Downloads/MySQL-4.0/mysql-4.0.22-win-noinstall.zip/from/pick2.安装:这个版本是直接解压缩到C盘就可以了.3.运行:运行bin/mysqld运行mysql,出现mysql>提示符或者用mysqluroot以管理员登录.默认密码好像没有,默认有一个Database叫mysql,以root......
  • AMEYA详解:上海雷卯常用防反接保护电路及功耗计算
    采用电池是最方便干净的电源,为电子电路提供电压。还有许多其他方法,为电子设备供电,如适配器,太阳能电池等,但最常见的直流电源是电池。通常,所有设备都带有防反接保护电路,但是如果您有任何电池供电的设备没有防反接保护,那么在更换电池时始终必须小心,否则它可能会炸毁设备。因此,在这......
  • mysql 创建定时器,每天晚上1点钟调用存储过程proc_task
    在MySQL中,你可以使用事件调度器(EventScheduler)来创建定时器,以在指定时间自动执行存储过程。以下是在每天晚上1点钟调用存储过程proc_task的示例:首先,确保MySQL事件调度器已经启用。如果尚未启用,可以在MySQL客户端中执行以下命令:SETGLOBALevent_scheduler=ON;然后,创......
  • 前端小白Step2-package.json文件详解
    前文已讲过 package.json-------npm的配置文件,主要用于确定当前项目直接依赖的包版本的范围(例如:^1.0.0表示的是大于等于1.0.0小于2.0.0)只依赖package.json管理包会有两个缺点:    *.同一份package.json安装的依赖版本可能不同,如果依赖包有小版本更新并且引入了bug会导致......
  • MySQL备份与恢复
    1.    直接拷贝数据库文件找到MySQL安装目录,如果是unix系列主机,进入data目录,tarcvf[数据库名].tar[数据库名],然后移动到用户目录,用ftpdownload这个文件,解压后拷贝到本机MySQL相应目录即可。2.    使用mysqldump导出:mysqldump--opt-uroot-p[密码]>dbbak.sql(使......
  • MySQL修改密码方法总结
    MySQL修改密码方法总结作者:intphp<scripttype=text/javascript></script><scriptsrc="http://pagead2.googlesyndication.com/pagead/show_ads.js"type=text/javascript></script><scriptsrc="http://down.meety.com/asrep/......
  • MySQL入门系列1-数据定义语言(DDL)
    一、概念DDL:数据定义语言,用来定义数据库对象,包含数据库、数据表、数据表中的字段。二、数据库相关操作1.查询所有数据库showdatabases;2.查询当前所在的数据库selectdatabase();3.创建数据库createdatabaseifnotexists数据库名;4.删除数据库dropdatabase数据库名;5.切换......
  • MySQL的Json类型个人用法详解
    ​ 前言虽然MySQL很早就添加了Json类型,但是在业务开发过程中还是很少设计带这种类型的表。少不代表没有,当真正要对Json类型进行特定查询,修改,插入和优化等操作时,却感觉一下子想不起那些函数怎么使用。比如把json里的某个键和值作为SQL条件,修改某个键下的子键的值,其中可能会遇到......