在日常的工作中,通常需要提取一些特定的字符串信息。本次主要对mysql中的字符串函数进行梳理。内容如下:
1
截取特定的字符串
在mysql中截取特定的字符串,主要包含两种:固定位置和固定文本。
1固定位置
left(被截取字符串, 截取长度):从左边截取字符串
right(被截取字符串, 截取长度):从右边截取字符串
从指定位置截取字符串:
mid(被截取字符串, 从第几位开始截取,截取长度)
substring(被截取字符串, 从第几位开始截取)
substring(被截取字符串,从第几位开始截取,截取长度)
substr(被截取字符串, 从第几位开始截取)
substr(被截取字符串,从第几位开始截取,截取长度)
select left('我是个数据分析师',4) ;-- 返回‘我是个数’select right('我是个数据分析师',4);-- 返回‘据分析师’select mid('我是个数据分析师',2,3);-- 返回‘是个数’select substring('我是个数据分析师',2);-- 返回‘是个数据分析师’select substring('我是个数据分析师',2,3);-- 返回‘是个数’select substr('我是个数据分析师',2);-- 返回‘是个数据分析师’select substr('我是个数据分析师',2,3);-- 返回‘是个数’
2
固定文本
substring_index(“待截取有用部分的字符串”,“截取数据依据的字符”,截取字符的位置N)
N>0,从左边截取;N<0,从右边截取。
SELECT substring_index('订单(Id:(8065778))','(',1) -- 返回‘订单’SELECT substring_index('订单(Id:(8065778))','(',2) -- 返回‘订单(Id:’SELECT substring_index('订单(Id:(8065778))',')',1) -- 返回‘订单(Id:(8065778’SELECT substring_index(substring_index('订单(Id:(8065778))',')',1),'(',-1) -- 返回‘8065778’
2
去除空格
trim():去除文本两边的空格
ltrim():去除文本左边的空格
rtrim():去除文本右边的空格
select trim(' I am a girl ')-- 返回‘I am a girl’select ltrim(' I am a girl ')-- 返回‘I am a girl ’select rtrim(' I am a girl ')-- 返回‘ I am a girl’
3
计算长度
length:一个汉字是算三个字符,一个数字或字母算一个字符
char_length:不管汉字还是数字或者是字母都算是一个字符
select length('我是')-- 返回‘6‘select length('I am')-- 返回‘4’select char_length('我是')-- 返回‘2‘select char_length('I am')-- 返回‘4’
4
大小写转换
lower()/lcase():转换为小写字母
upper()/ucase():转换为大写字母
select lower('Data')-- 返回‘data’select lcase('Data')-- 返回‘data’select upper('Data')-- 返回‘DATA’select ucase('Data')-- 返回‘DATA’
5
拼接与替换函数
concat(str1,str2,......):将多个字符串拼接在一起
concat_ws(separator,str1,str2,…):将多个字符串按照指定的分隔符拼接在一起
group_concat():将组中的字符串拼接在一起
replace(str,old_str,new_str):文本替换
select concat('我','是','谁')-- 返回‘我是谁’select concat_ws('-','是','谁')-- 返回‘是-谁’select replace('我是','是','谁')-- 返回‘我谁’
6
匹配函数
locate(str1,str):函数返回字符串str1在str中第一次出现的位置。如果str1在str中不存在,返回0。
locate(str1,str,pos) :函数返回字符串str1在str中的第pos位置后第一次出现的位置。如果str1在str中不存在,返回0。
locate函数对大小写不敏感。
SELECT LOCATE('good', 'good good study')-- 返回‘1’SELECT LOCATE('Good', 'good good study')-- 返回‘1’SELECT LOCATE('s', 'good good study',2)-- 返回‘11’SELECT LOCATE('s', 'good good study',12)-- 返回‘0’