zoukankan      html  css  js  c++  java
  • 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                                                            |
    +--------------------------------------------------------------+
  • 相关阅读:
    Do You See Me? Ethical Considerations of the Homeless
    ELDER HOMELESSNESS WHY IS THIS AN ISSUE?
    Endoflife support is lacking for homeless people
    html内联框架
    html字体
    html块 div span
    html列表
    html表格
    SQL Server管理员专用连接的使用   作为一名DBA,经常会处理一些比较棘手的服务无响应问题,鉴于事态的严重性,多数DBA可能直接用“重启”大法,以便尽快的恢复生产环境的正常运转,但是多数情况
    如何配置最大工作线程数 (SQL Server Management Studio)
  • 原文地址:https://www.cnblogs.com/aiwan/p/11915422.html
Copyright © 2011-2022 走看看