mysql之更新、移除json格式的数据的属性
表schema格式:(uid为主键)
uid,name,age,pro
数据样式:
'100','tom',18,'{"attr1:''湖北省-武汉市"}'
mysql中对pro进行添加属性
要求实现:
对pro添加一个attr2的属性,如果不存在此属性,则添加;如果存在此属性,则更新。
事先将pro为null的记录去除掉(无效、垃圾数据)
实现语句:
insert into student values('100','hgc','28',CONCAT('{"attr2":','"18-19"}'))
ON DUPLICATE KEY UPDATE pro=json_set(pro,'$.attr2','北京市-海淀区')
情况1:如不存在此主键记录,则插入记录及属性attr2:18-19
执行:
情况2:主键记录存在,attr2属性不存在,则增加attr属性,值为北京市-海淀区
首先移除掉100的attr2属性:
update student set pro = json_remove(pro,'$.attr2') where id='100'
执行:
执行第一句:
insert into student values('100','hgc','28',CONCAT('{"attr2":','"18-19"}'))
ON DUPLICATE KEY UPDATE pro=json_set(pro,'$.attr2','北京市-海淀区')
情况2:主键记录存在,attr2属性存在,则增加attr属性,值为上海市-徐汇区
执行语句:
insert into student values('100','hgc','28',CONCAT('{"attr2":','"18-19"}'))
ON DUPLICATE KEY UPDATE pro=json_set(pro,'$.attr2','上海市-徐汇区')
执行效果:
更多学习、面试资料尽在微信公众号:Hadoop大数据开发