首页 > 数据库 >mysql增删改查json中的某个字段

mysql增删改查json中的某个字段

时间:2022-08-24 14:45:52浏览次数:73  
标签:info ip 改查 json mysql push data SELECT

创建表

1 CREATE TABLE t_json(id INT PRIMARY KEY, NAME VARCHAR(20), info JSON);

插入记录

1 INSERT INTO t_json(id,sname,info) VALUES(1 , 'test' , '{"time":"2017-01-01 13:00:00","ip":"192.168.1.1","result":"fail"}' );
2 INSERT INTO t_json(id,sname,info) VALUES(2 , 'my' ,JSON_OBJECT( "time" ,NOW(), 'ip' , '192.168.1.1' , 'result' , 'fail' ));

查询

查询有多少个键

1 SELECT id, json_keys(info) AS "keys" FROM t_json;

查询字段值

方法1:

1 SELECT json_extract(字段名,'$.json结构') FROM 表名;

如果json里有双引号,那这样取出来的数据也带双引号,要去掉就使用REPLACE函数
例如:
ps_push_data表里的push_data字段存的数据为:{"carRenewalInfoVo":{"licence":"浙AF55Z0"},"code":"1","msg":"成功"}
使用sql

1 SELECT REPLACE(json_extract(push_data,'$.carRenewalInfoVo.licence'),'"','') FROM ps_push_data;

取出来的就是:浙AF55Z0

值得注意的是,只有MySQL5.7及以上版本才支持json数据的操作

方法2:

1 SELECT 字段名 -> '$.json结构' FROM 表名;

同上,如果json里有双引号,那这样取出来的数据也带双引号,要去掉就要使用另一个方法:

1 SELECT 字段名 ->> '$.json结构' FROM 表名;

例如:
ps_push_data表里的push_data字段存的数据为:{"carRenewalInfoVo":{"licence":"浙AF55Z0"},"code":"1","msg":"成功"}

取出来的就是:浙AF55Z0

值得注意的是,只有MySQL5.7及以上版本才支持json数据的操作

删除键

1 UPDATE t_json SET info = json_remove(info, '$.ip' );

增加键

1 UPDATE t_json SET info = json_set(info, '$.ip' , '192.168.1.1' );

变更键

1 UPDATE t_json SET info = json_set(info, '$.ip' , '192.168.1.2' );

标签:info,ip,改查,json,mysql,push,data,SELECT
From: https://www.cnblogs.com/min225016/p/16619815.html

相关文章

  • QT 连接 MySQL 版本问题
    问题现象SSLconnectionerror:unknownerrornumberQMYSQL:Unabletoconnect问题原因出现这样的现象是因为我QT使用的是5.7的驱动,而我连接的数据库是8.0.30版本的,......
  • mysql 复制一个库
    首先创建一个库 new_db然后使用mysqldump工具把老的库数据复制到新库打开黑框mysqldumpold_db-uroot-p'12345'--add-drop-table|mysqlnew_db-uroot-p'123......
  • Linux mysql数据库自动备份脚本策略
    1.创建保存备份文件的文件夹mkdir/data/mysqlbak 2.编写脚本cd/data/mysqlbakvisqlAutoBak.sh SH脚本内容:DB_USER="root"DB_PASS="root"#你的数据库密码D......
  • mysql中if
    在mysql中,if()函数用于判断条件,在条件为true时返回一个值,在条件为false则返回另一个值,语法为“IF(条件,条件为真时的返回值,条件为假时的返回值)”。mysql中if的用法是......
  • mysql更改执行计划_数据量增加导致MySQL执行计划改变
    收到运维同学电话,MySQL服务器连接数满了,登录服务器查看,确实满了,好吧,首先增加连接数到2500,暂时提供对外服务。连接继续升高,又快达到2500。发现有大量的查询时间将近到了1200......
  • 设置Mysql数据库允许远程连接
    Mysql数据库用户权限设置1.进入容器dockerexec-itmysql_test/bin/bash注意:由于我是通过docker安装的数据库,所以在操作之前需要进入容器,直接安装在本机的用户可以跳......
  • Linux删除MySQL
    查看进程rpm-qa|grep-imysql删除进程rpm-ev--nodeps+进程服务删除mysql文件夹find/-namemysql删除文件夹rm-rf+文件夹路径删除配置文件rm......
  • mysql 建库、建用户、授权命令
    版本5.7CREATEDATABASE   `databasename`;      CREATEUSER'username'@'%'IDENTIFIEDBY'password';      GRANTALLPRIVILEGESON`databas......
  • Linux安装mysql8.0
    MySQL配置MySQL8安装源sudorpm-Uvhhttps://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm安装MySQL8(提示下载包,选y,后面有其他提示都选y)sudoyu......
  • 基于Docker做MySQL主从搭建与Django的读写分离
    基于Docker做MySQL主从搭建主从的作用:写数据数据时使用主库,从库只用来读数据,这样做能够减少数据库压力,主从搭建可以一主一从,也可以是一主多从。mysql主从配置的流程如图......