• 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
  • 相关阅读:
    最短路回顾
    树链剖分【模板】
    grep 、find 、tree 新发现
    网口划VLAN
    JDK安装
    网口做trunk
    PXE搭建
    C# 生成DLL文件
    在form窗体里面 寻找当前焦点的控件
    在屏幕右下方显示提示信息(winform窗体)(借鉴)
  • 原文地址:https://www.cnblogs.com/frank-quan/p/6306507.html
Copyright © 2020-2023  润新知