mysql截取字符串并更新_mysql 截取字符串并 update select

mysql截取字符串并更新_mysql 截取字符串并 update select亲测有效格式为update需要修改的表b1innerjoin(查询到的临时表)b2onb1.id=b2.idsetb1.要修改的字段=b2.查询到的值因为想要把表中的一个字段的一部分取出来,另放一个新的字段里面,所以想到了mysql的字符串截取功能。需要更新的数据:selectparams,substring_index(params,’=’,-1),paramI…

大家好,又见面了,我是你们的朋友全栈君。

亲测有效  格式为 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 |

+————————————————————–+

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132074.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号