• mysql


    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, '20170109001','{"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
  • 相关阅读:
    C++类型转换(字符串)
    GDI+ 中Image::FromStream ,用流的方式显示图像
    mfc对话框序列化实例
    配置android开发环境eclipse获取ADT获取不到(转)
    vs开发错误总结
    MFC获取文件操作
    Android系统架构剖析(转)
    OpenCV 图像采样 插值 几何变换
    C++ char*,char[],string,CString转换
    Simscape Multibody 教程 —— 入门学习
  • 原文地址:https://www.cnblogs.com/frank-quan/p/6306507.html
Copyright © 2020-2023  润新知