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

mysql - json串新增字段的更多相关文章

  1. Json串的字段如果和类中字段不一致,如何映射、转换?

    Json串是我们现在经常会遇到的一种描述对象的字符串格式.在用Java语言开发的功能中,也经常需要做Json串与Java对象之间的转换. fastjson就是经常用来做Json串与Java对象之间的转 ...

  2. MYSQL - JSON串中查找key对应的值

    1.建表 -- 建表 drop table if exists ta_product2; CREATE TABLE ta_product2( id int primary key auto_incre ...

  3. 关于fastjson在序列化成JSON串时字段增加的问题

    今天在项目中遇到控制器中返回的对象经过fastjsonMessageConverter转换后,前台收到的json中多了一个字段A的问题.而返回的这个对象中根本就没有定义这个字段A. 查了好久才发现对象 ...

  4. java实体类和json串字段名称不一致或者与map中字段名称不一致使用注解转化

    package yuanCheng; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List ...

  5. JSON 串 自定义解析字段

    我们有时候会只需要j一个很长的json串中的少数的key value ,这个时候我们不会特意去建立一个object 来映射属性,这个时候我们可以应用 gson的JsonParser  来解析json串 ...

  6. mysql json数据类型

    概述 Mysql从5.7.8版本开始支持JSON字段,可以高效的处理JSON文档.相比字符串字段,JSON字段有下面的几处优势: 自动的校验JSON格式,无效的文档会产生错误 优化的存储格式(结构化的 ...

  7. 一文说透 MySQL JSON 数据类型(收藏)

    JSON 数据类型是 MySQL 5.7.8 开始支持的.在此之前,只能通过字符类型(CHAR,VARCHAR 或 TEXT )来保存 JSON 文档. 相对字符类型,原生的 JSON 类型具有以下优 ...

  8. 利用QJSON将FDQuery转成JSON串

    服务器要支持Http协议,打算采用Http+JSON的方式来交换数据.一开始考虑使用superobject,因为以前使用比较多,比较熟悉. 代码如下: class function FDQueryTo ...

  9. MYSQL基础01(新增,修改,删除)

    首先说明一下,本人之前一直都是用MSSQL,由于工作原因,每天写上百条sql语句,并持续了几年;由于换了工作目前主要接触的MYSQL;所以现在开始学习MYSQL. 我的学习计划很简单,我在MSSQL使 ...

随机推荐

  1. git push 免密码

    git push 免密码 通用情况 使用ssh协议 git add 使用tab键自动补全的中文文件名乱码 jupyter notebook 创建密码 git push 免密码 通用情况 1.使用文件创 ...

  2. [DP题]采药

    1775:采药 总时间限制:1000ms内存限制:65536kB 描述 辰辰是个很有潜能.天资聪颖的孩子,他的梦想是称为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给 ...

  3. pyspark连接mysql

    from pyspark import SparkContext from pyspark.sql import SQLContext if __name__=="__main__" ...

  4. bzoj4331: JSOI2012 越狱老虎桥

    Description 这里,是美丽的南京:这里,是秀美的进香河:这里是安逸的老虎桥.  如果说进香河的美,美在其秀美的风光,倒不如说是美在了那惬意的南京古典小巷式生活.如果说进香河的迷人,在其淳朴的 ...

  5. Java 字符串与对象进行比较 compareTo()

    Java 手册 compareTo public int compareTo(String anotherString) 按字典顺序比较两个字符串.该比较基于字符串中各个字符的 Unicode 值.按 ...

  6. [Delphi] 设置线程区域语言防止乱码

    uses  Windows; 在工程文件中添加一句代码,如下: Application.Initialize; //添加以下一句解决外文系统乱码问题 SetThreadLocale(DWORD(Wor ...

  7. Windows下测量cpu利用率的类

    方法参考网上的一段代码,把它改成了类以方便调用,很简单,但是可以一用,哈哈. cpu_usage.h #include <windows.h> class CpuUsage { publi ...

  8. 设置GO环境变量

    linux的设置方法:有4个环境变量需要设置:GOROOT.GOPATH.GOBIN以及PATH.需要设置到某一个profile文件中(~/.bash_profile(单一用户)或/etc/profi ...

  9. Memo synEditor 当前行号

    Memo 当前行号,坐标,位置 可以使用Memo的属性CaretPos.X来取行鼠标所在行的行数与鼠标所在行的第几位 Memo.CaretPos.X 光标或鼠标所在行的列号(第几位),从0开始计数Me ...

  10. LINQPad 4 初次使用心得

    最近学习EntityFramework,于是接触了LinqPad这款享誉已久的软件,深感相见恨晚.软件具体不多做介绍了,只简单介绍下使用方法. 数据库操作 添加数据库连接 1,首先通过点击Add co ...