zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    配置secondarynamenode主机名masters
    配置secondarynamenode主机名masters
    Redis 数据备份与恢复
    Redis 数据备份与恢复
    以太坊:Go、Java、Python、Ruby、JS客户端介绍
    以太坊:创建安全多签名钱包及高级设置
    以太坊:导入预售钱包,更新、备份、恢复账号
    以太坊客户端的选择与安装
    以太坊:C++客户端的安装与定制(一)
    2019最受欢迎数据库:MySQL居首PostgreSQL第二Oracle位列第八
  • 原文地址:https://www.cnblogs.com/frank-quan/p/6306507.html
Copyright © 2011-2022 走看看