1、建表

-- 建表
drop table if exists ta_product2;
CREATE TABLE ta_product2(
id int primary key auto_increment,
productCode varchar(50) comment '产品Code',
productAttrJson text comment '产品json串'
)engine=innodb;

2、插入数据

-- 插入数据
INSERT INTO ta_product2 VALUES(NULL, '','{\"saleAmount\":\"100\",\"productName\":\"20160620,-qbs002,金融\"}');

id productCode productAttrJson
------ ----------- --------------------------------------------------------------
1 20170109001 {"saleAmount":"100","productName":"20160620,-qbs002,金融"}

3、拼接后的完整json串

SELECT  t.productCode, REPLACE(
t.productAttrJson,
'}',
CONCAT(',"productCode":' , '"', t.productCode , '"', RIGHT(t.productAttrJson,1))
) PRODUCT_ATTR_JSON
FROM ta_product2 t
productCode PRODUCT_ATTR_JSON
----------- ------------------------------------------------------------------------------------------
20170109001 {"saleAmount":"100","productName":"20160620,-qbs002,金融","productCode":"20170109001"}

4、最终update sql

-- 上面已经看到了我们想要的json串,现在只需要update就可以了
UPDATE ta_product2 t4 SET t4.productAttrJson =
(
SELECT t2.productAttrJson FROM (
SELECT t.productCode, REPLACE(
t.productAttrJson,
'}',
CONCAT(',"productCode":' , '"', t.productCode , '"', RIGHT(t.productAttrJson,1))
) productAttrJson
FROM ta_product2 t
) t2 WHERE t2.productCode=t4.productCode
) WHERE LOCATE('productCode',t4.productAttrJson) <= 0;

5、查询结果已经修改了

    id  productCode  productAttrJson
------ ----------- ------------------------------------------------------------------------------------------
1 20170109001 {"saleAmount":"100","productName":"20160620,-qbs002,金融","productCode":"20170109001"}

6、函数解释

RIGHT

-- 从json串最右边获取第一个字符
select RIGHT(t.productAttrJson,1) FROM ta_product2 t;
RIGHT(t.productAttrJson,1)
----------------------------
}

CONCAT

-- 拼接要追加的字符串
SELECT CONCAT(',"productCode":' , '"', t.productCode , '"', RIGHT(t.productAttrJson,1)) FROM ta_product2 t;
CONCAT(',"productCode":' , '"', t.productCode , '"', RIGHT(t.productAttrJson,1))
----------------------------------------------------------------------------------
,"productCode":"20170109001"}

LOCATE

-- 对locate解释下,返回出现的角标位置,从0开始,没找到返回0。
SELECT LOCATE('productCode',t4.productAttrJson) FROM ta_product2 t4;
LOCATE('productCode',t4.productAttrJson)
------------------------------------------
58

最新文章

  1. 磁盘的读写-想起了SGA PGA DBWR LGWR...
  2. MSDN论坛被垃圾信息刷爆了!!!
  3. ajax异步提交文件
  4. gridview 经典
  5. each用法
  6. C#去除List中集合的重复项(类型对象和单一类型)
  7. OC11_真正的代理
  8. 老李分享:jvm内存原型剖析
  9. java中方法传值小知识解析
  10. eclipse集成html5插件
  11. layui表格点击排序按钮后,表格绑定事件失效解决方法
  12. JVM内存:年轻代、老年代、永久代(推荐 转)
  13. Luogu P2002 消息扩散&amp;&amp;P1262 间谍网络
  14. 第1章 CLR的执行模型
  15. 良好的GUI设计指南
  16. Spring Boot + Druid 监控数据库(三)
  17. 互换元素(swap,swap_ranges)
  18. SQL 触发器的缺点 坏处 弊端 哼╭(╯^╰)╮
  19. S2-01
  20. pycharm下运行unittest的问题

热门文章

  1. HttpHelp 请求帮助类
  2. C++ is-a关系
  3. HDU 4004 The Frog&#39;s Games(二分+小思维+用到了lower_bound)
  4. Eutils用法总结
  5. mysql修复表
  6. springboot 邮件服务
  7. redis相对关系型数据库的优势
  8. 解决CentOS内网机通过Windows下架设代理来访问网络
  9. Linux CentOS修改网卡IP/网关设置
  10. rook 删不掉的问题