MySQL使用起来非常方便的对JSON数据进行增删改查!
MySQL从5.7版本开始支持JSON格式的数据,使用起来非常方便。 ? INT 主键自动递增,
名称
VARCHAR ( 50 ) NOT NULL,
info
JSON sj也可以是类型); NULL
info
info
info
插入数据
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_summary
a
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。