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                                                            |
    +--------------------------------------------------------------+
  • 相关阅读:
    2.8 Classes of Restricted Estimators
    navicat远程登录windows服务器
    面试题
    【南阳OJ分类之语言入门】80题题目+AC代码汇总
    基于‘BOSS直聘招聘信息’分析企业到底需要什么样的PHPer
    数据开源
    Pyhton爬虫实战
    Python爬虫框架Scrapy实战
    做网站用UTF-8编码还是GB2312编码?
    【南阳OJ分类之大数问题】题目+AC代码汇总
  • 原文地址:https://www.cnblogs.com/aiwan/p/11915422.html
Copyright © 2011-2022 走看看