1. 字符串截取:left(str, length)
select left('这是要截取的内容', 3);
2. 字符串截取:right(str, length)
select right('这是要截取的内容', 3);
3.1 从字符串的第 4 个字符位置开始取,直到结束。
select substring('这是要截取的内容', 4);
3.2 从字符串的第 4 个字符位置开始取,只取 2 个字符。
select substring('这是要截取的内容', 4, 2);
3.3 从字符串的第 4 个字符位置(倒数)开始取,直到结束。
select substring('这是要截取的内容', -4);
3.4 从字符串的第 4 个字符位置(倒数)开始取,只取 2 个字符。
select substring('这是要截取的内容', -4, 2);
更多相关内容
MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。
mysql> select left('sqlstudy.com', 3);
+-------------------------+
| left('sqlstudy.com', 3) |
+-------------------------+
| 输出:sql |
+-------------------------+
在这里插入代码片
2. 字符串截取:right(str, length) hibernate 框架不支持 mysql客户端擦查询是可以的
mysql> select right('sqlstudy.com', 3);
+--------------------------+
| right('sqlstudy.com', 3) |
+--------------------------+
| 输出:com |
+--------------------------+
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 |
+--------------------------------------------------------------+
收起
#一个字段不想要后两位
#如果是字符串类型用char_lengthupdate tablename set field1 = left(field1,length(field1)-2);
去掉后面的街道两个字
电话等身份证敏感信息脱敏处理
--脱敏姓名
UPDATE wb_person_message SET `name`=(if(LENGTH(name)>6,CONCAT(LEFT(name,1), '**' ),CONCAT(LEFT(name,1), '*')));--脱敏身份证号
UPDATE wb_person_message SET idNumber=CONCAT(LEFT(idNumber,4), '************' ,RIGHT(idNumber,2));--脱敏学历
update wb_person_message set education = '博士',university = '清华大学',specialities='计算机科学与技术';--脱敏手机号
UPDATE wb_person_message set phone = CONCAT(LEFT(phone,3), '*****' ,RIGHT(phone,3));--查询结果
SELECT name,idNumber,phone,education,university,specialities from wb_person_message;
练习截取字符串函数(五个)
1、replace函数
语法:replace(object,search,replace)
含义:把object中出现search的全部替换为replaceselect replace('张 三',' ','');+---------------------------+
| replace('张 三',' ','') |
+---------------------------+
| 张三 |
+---------------------------+
--把表table中的name字段中的空格去掉
update table set name=replace(name,' ','')2、trim 函数
语法:trim([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
含义:去掉字符串前面或后面指定的字符串--1、去掉字符串前后的空格
SELECT TRIM('zhangsan');+---------------------------+
| TRIM('zhangsan') |
+---------------------------+
| zhangsan |
+---------------------------+--2、去掉左边指定的字符串
SELECT TRIM(LEADING 'x' FROM 'xxxzhangsanxxx');+------------------------------------------------+
| TRIM(LEADING 'x' FROM 'xxxzhangsanxxx') |
+------------------------------------------------+
| zhangsanxxx |
+------------------------------------------------+--3、去掉右边指定的字符串
SELECT TRIM(TRAILING 'x' FROM 'xxxzhangsanxxx');+------------------------------------------------+
| TRIM(TRAILING 'x' FROM 'xxxzhangsanxxx') |
+------------------------------------------------+
| xxxzhangsan |
+------------------------------------------------+--4、去掉前后指定的字符串
SELECT TRIM(BOTH 'x' FROM 'xxxzhangsanxxx');+------------------------------------------------+
| TRIM(BOTH 'x' FROM 'xxxzhangsanxxx') |
+------------------------------------------------+
| zhangsan |
+------------------------------------------------+
mysql索引从1开始
一、mysql截取字符串函数
1、left(str,index) 从左边第index开始截取
(从左面开始截取几个要几个)
2、right(str,index)从右边第index开始截取
(从右面开始截取几个要几个)
3、substring(str,index)当index>0从左边开始截取直到结束 当index<0从右边开始截取直到结束 当index=0返回空
(根据index的正负)
4、substring(str,index,len) 截取str,从index开始,截取len长度
(从想要的地方截取,多少个长度)
5、substring_index(str,delim,count),str是要截取的字符串,delim是截取的字段 count是从哪里开始截取(为0则是左边第0个开始,1位左边开始第一个选取左边的,-1从右边第一个开始选取右边的
(根据特殊符号截取字符串)
6、subdate(date,day)截取时间,时间减去后面的day
(减去想要的天数)
7、subtime(expr1,expr2) 时分秒expr1-expr2
(两个时间相减)
二、mysql截取字符串的一些例子
1、left(str,index) index>=0 从左边开始截取
2、right(str,index) index>=0 从右边开始截取
3、substring(str,index) =SUBSTRING(str FROM pos) 包括index这个位置的字符
4、substring(str,index,len) 截取str,从index开始,截取len长度
5、substring_index(str,delim,count),str是要截取的字符串,delim是截取的字段 count是从哪里开始截取(为0则是左边第0个开始,1位左边开始第一个选取左边的,-1从右边第一个开始选取右边的
为1,从左边开始数第一个截取,选取左边的值
为-1,从右边开始数第一个截取,选取右边的值
特殊情况,字符串中没有指定的字符,则返回原字符串(index=0时候例外)
6、subdate(date,day)截取时间,时间减去后面的day
7、subtime(expr1,expr2)--是两个时间相减
收起
select left('这是要截取的内容', 3);
## "这是要"
select right('这是要截取的内容', 3);
## "的内容"
select substring('这是要截取的内容', 4);
## "截取的内容"
select substring('这是要截取的内容', 4, 2);
## "截取"
select substring('这是要截取的内容', -4);
## "取得内容"
select substring('这是要截取的内容', -4, 2);
## "取的"