Mysql字符串截取总结及项目实际运用:left()、right()、substring()、substring_index()

时间:2022-06-01 20:37:31

 在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现比通过代码实现要更方便快捷些,mysql有很多字符串函数可以用来处理这些需求,如Mysql字符串截取总结:left()、right()、substring()、substring_index()。

具体项目运用
更新qlsx_bgqx,永久
-----update st_qlsx set qlsx_bgqx='永久';
更新qlsx_bm,将QLSXJBM字段的右边9个数字赋值给 qlsx_bm字段
-----update st_qlsx set qlsx_bm=(right(QLSXJBM, 9));
更新qlsx_lx,将QLSXJBM的左边2个字段赋值给qlsx_lx,并且根据赋值后的数据匹配具体文字
-----update st_qlsx set qlsx_lx=(left(QLSXJBM, 2));
-----update st_qlsx set qlsx_lx = CASE WHEN qlsx_lx='许可' THEN '01' WHEN qlsx_lx='处罚' THEN '03' WHEN qlsx_lx='强制' THEN '04'
WHEN qlsx_lx='征收' THEN '05' WHEN qlsx_lx='给付' THEN '06' WHEN qlsx_lx='裁决' THEN '07' WHEN qlsx_lx='确认' THEN '08'
WHEN qlsx_lx='奖励' THEN '09' WHEN qlsx_lx='权力' THEN '10' WHEN qlsx_lx='服务' THEN '14'
END ;

一.从左开始截取字符串

用法:left(str, length),即:left(被截取字符串, 截取长度)

SELECT LEFT('www.yuanrengu.com',8)
结果为:www.yuan

二.从右开始截取字符串

用法:right(str, length),即:right(被截取字符串, 截取长度)

SELECT RIGHT('www.yuanrengu.com',6)
结果为:gu.com

三.截取特定长度的字符串

用法:

substring(str, pos),即:substring(被截取字符串, 从第几位开始截取)
substring(str, pos, length),即:substring(被截取字符串,从第几位开始截取,截取长度)
1.从字符串的第9个字符开始读取直至结束

SELECT SUBSTRING('www.yuanrengu.com', 9)
结果为:rengu.com

2.从字符串的第9个字符开始,只取3个字符

SELECT SUBSTRING('www.yuanrengu.com', 9, 3)
结果为:ren
3.从字符串的倒数第6个字符开始读取直至结束

SELECT SUBSTRING('www.yuanrengu.com', -6)
结果为:gu.com

4.从字符串的倒数第6个字符开始读取,只取2个字符

SELECT SUBSTRING('www.yuanrengu.com', -6, 2)
结果为:gu

四.按关键字进行读取

用法:substring_index(str, delim, count),即:substring_index(被截取字符串,关键字,关键字出现的次数)

1.截取第二个“.”之前的所有字符

SELECT SUBSTRING_INDEX('www.yuanrengu.com', '.', 2);
结果为:www.yuanrengu

2.截取倒数第二个“.”之后的所有字符

SELECT SUBSTRING_INDEX('www.yuanrengu.com', '.', -2);
结果为:yuanrengu.com

3.如果关键字不存在,则返回整个字符串

SELECT SUBSTRING_INDEX('www.yuanrengu.com', 'sprite', 1);
结果为:www.yuanrengu.com