Code前端首页关于Code前端联系我们

MySQL使用起来非常方便的对JSON数据进行增删改查!

terry 2年前 (2023-09-26) 阅读数 49 #数据库

MySQL从5.7版本开始支持JSON格式的数据,使用起来非常方便。 ? INT 主键自动递增,
名称 VARCHAR ( 50 ) NOT NULL,
info
info
info
info
JSON sj也可以是类型); NULL

插入数据

INSERT INTO test_user(name, info) VALUES('xiaoming','{"性别": 1, "年龄": 18,__ "小萌"}');

json类型字段必须是有效的json字符串

您可以使用JSON_OBJECT()函数创建一个json对象:

INSERT INTO test_user(♼name , info) VALUES('xiaohua', JSON_OBJECT("sex", 0, "age", 17));

使用 JSON_ARRAY() 创建 json 数组

INTO test_user( 姓名, 信息) VALUES('小张', JSON_OBJECT("性别", 1, "年龄", 19, "标签", JSON_ARRAY(3,5,90) !!!! '$.key[index]'

select name, info->'$.nick_name', info->'$.sex', info->'$.tag[0]' from test_user;

等价:对象为 JSON_EXTRACT(json column, '$.key') 数组为 JSON_EXTRACT(json column, '$.key[index]')

名称选择, JSON_EXTRACT(info, '$.nick_name' ), JSON_EXTRACT (info, '$.sex'), JSON_EXTRACT(info, '$.tag[0]') from test_user;

但是看到上面的“小萌”是用双引号引起来的,这不是我们想要的如果需要的话,你可以使用JSON_UNQUOTE函数去掉双引号

JSON_UNQUOTE(info->'$.nick_name') in test_user where name='xiaoming';

可以直接使用运算符-> >

选择name, info ->>'$.nick_name' from test_user where name='xiaoming';

当然属性也可以作为查询条件

select name, info->>'$. Kong_name' from test_user where info->'$.nick_name'='小萌';

SELECT LoanNo FROM wbhj_loan lo WHERE lo.contractInfo ->> '$.contractNo1'=AND' .loanResult= 1

值得一提的是,可以通过虚拟列快速查询JSON类型的指定属性。

创建虚拟列:

ALTER Table

请注意,使用 ->>

运算符时,这与常规列查询相同:

select name, Kongzi_name from test_user where Kongzi_name ='小萌';

更新

使用()JSON_INSERT插入新值但不覆盖现有值

UPDATE test_user SET info = JSON_INSERT(info, '$.sex', 1, '$.Kongzi_name', '小花') where id=2;

可以使用 JSON_SET() 插入新值并覆盖现有值those Value

UPDATE test_user SET info = JSON_INSERT(info, '$.sex', 0, '$.Kongzi_name', '小张') where id=3;

使用 JSON_REPLACE() 替换现有的。 Value

UPDATE test_user SET info = JSON_REPLACE(info, '$.sex', 1, '$.tag', '[1,2,3]') where id=2;

你可以看到那里是无标签更新

json数组格式查询

SELECT
json_extract(a.summaryDesc,('$[0].sellerInfoSection[1].house♽')) ​​channel_summarya

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门