• mysql 截取字符串并 update select


    亲测有效  格式为  update 需要修改的表 b1 inner join (查询到的临时表)b2 on b1.id=b2.id set b1.要修改的字段=b2.查询到的值

    因为想要把表中的一个字段的一部分取出来,另放一个新的字段里面,所以想到了mysql的字符串截取功能。

    需要更新的数据:

    select params, substring_index(params, '=', -1), paramId from task where expiredDate is null;

    由于mysql不能直接使用set select的结果,所以必须使用inner join。

    上完整栗子:

    update task a inner join (select id, substring_index(params, '=', -1) as param_id from task b where b.expiredDate is null) c 
    on a.id = c.id set a.paramId = c.param_id where a.expiredDate is null ;

       

    附上截取字符串栗子:

    1. 字符串截取:left(str, length)  

    mysql> select left('sqlstudy.com', 3);
    +-------------------------+  
    | left('sqlstudy.com', 3) |  
    +-------------------------+  
    | sql                     |  
    +-------------------------+  


    2. 字符串截取:right(str, length)  

    mysql> select right('sqlstudy.com', 3);  
    +--------------------------+  
    | right('sqlstudy.com', 3) |  
    +--------------------------+  
    | com                      |  
    +--------------------------+  


    3. 字符串截取:substring(str, pos); substring(str, pos, len)  


    3.1 从字符串的第 4 个字符位置开始取,直到结束。  

    mysql> select substring('sqlstudy.com', 4);
    +------------------------------+
    | substring('sqlstudy.com', 4) |
    +------------------------------+
    | study.com                    |
    +------------------------------+


    3.2 从字符串的第 4 个字符位置开始取,只取 2 个字符。  

    mysql> select substring('sqlstudy.com', 4, 2);
    +---------------------------------+
    | substring('sqlstudy.com', 4, 2) |
    +---------------------------------+
    | st                              |
    +---------------------------------+


    3.3 从字符串的第 4 个字符位置(倒数)开始取,直到结束。  

    mysql> select substring('sqlstudy.com', -4);
    +-------------------------------+
    | substring('sqlstudy.com', -4) |
    +-------------------------------+
    | .com                          |
    +-------------------------------+


    3.4 从字符串的第 4 个字符位置(倒数)开始取,只取 2 个字符。  

    mysql> select substring('sqlstudy.com', -4, 2);
    +----------------------------------+
    | substring('sqlstudy.com', -4, 2) |
    +----------------------------------+
    | .c                               |
    +----------------------------------+


      注意在函数 substring(str,pos, len)中, pos 可以是负值,但 len 不能取负值。  


    4. 字符串截取:substring_index(str,delim,count)  


    4.1 截取第二个 '.' 之前的所有字符。  

    mysql> select substring_index('www.sqlstudy.com.cn', '.', 2);
    +------------------------------------------------+
    | substring_index('www.sqlstudy.com.cn', '.', 2) |
    +------------------------------------------------+
    | www.sqlstudy                                   |
    +------------------------------------------------+


    4.2 截取第二个 '.' (倒数)之后的所有字符。  

    mysql> select substring_index('www.sqlstudy.com.cn', '.', -2);
    +-------------------------------------------------+
    | substring_index('www.sqlstudy.com.cn', '.', -2) |
    +-------------------------------------------------+
    | com.cn                                          |
    +-------------------------------------------------+


    4.3 如果在字符串中找不到 delim 参数指定的值,就返回整个字符串  

    mysql> select substring_index('www.sqlstudy.com.cn', '.coc', 1);
    +---------------------------------------------------+
    | substring_index('www.sqlstudy.com.cn', '.coc', 1) |
    +---------------------------------------------------+
    | www.sqlstudy.com.cn                               |
    +---------------------------------------------------+


     4.4 截取一个表某个字段数据的中间值 如该字段数据为  1,2,3  

    mysql> select substring_index(substring_index(该字段, ',', 2) , ',', -1) from 表名;
    +--------------------------------------------------------------+
    | substring_index(substring_index(该字段, ',', 2);  , ',', -1)  |
    +--------------------------------------------------------------+
    | 2                                                            |
    +--------------------------------------------------------------+
  • 相关阅读:
    原型链与析构函数
    django篇-路由系统介绍
    mvc与mtv
    模板初探
    安装和创建django项目
    一分钟学会定时删除日志的 Shell 脚本
    svn其中一种备份方式svnsync
    mysql企业实战(二)之主从复制,读写分离,双主,以及高可用
    mysql企业实战(一)
    nginx详解
  • 原文地址:https://www.cnblogs.com/mr-mihu/p/11915422.html
Copyright © 2020-2023  润新知