MySQL字符串函数详解
简介
本文主要讲解MySQL中的字符串函数,包括:left、right、ltrim、rtrim、trim、upper、lower、lpad、rpad、concat、concat_ws、instr、substr、length、char_length、replace、reverse、char、ascii。
left函数
语法:left(str,length),表示从字符串str左边开始截取指定长度length的部分,若length小于等于0,则返回空,若length大于等于str本身的长度,则返回str本身。
示例:从字符串【abcde】左边开始截取3个字符。
select left('abcde',3)
返回结果如下图:
right函数
语法:right(str,length),表示从字符串str右边开始截取指定长度length的部分,若length小于等于0,则返回空,若length大于等于str本身的长度,则返回str本身。
示例:从字符串【abcde】右边开始截取3个字符。
select right('abcde',3)
返回结果如下图:
ltrim函数
语法:ltrim(str),表示删除字符串str开头的所有空格。
示例:字符串【 abcde 】开头和结尾各有两个空格,现在删除其开头所有的空格。
select ltrim(' abcde ')
返回结果如下图:左边空格被全部删除,右边空格全部保留。
rtrim函数
语法:rtrim(str),表示删除字符串str结尾的所有空格。
示例:字符串【 abcde 】开头和结尾各有两个空格,现在删除其结尾所有的空格。
select rtrim(' abcde ')
返回结果如下图:右边空格被全部删除,左边空格全部保留。
trim函数
语法:trim(str),表示删除字符串str开头和结尾的所有空格,但不能删除中间的空格。
示例:字符串【 ab c de 】开头和结尾各有两个空格,中间也有空格,现在删除其开头和结尾所有的空格,保留中间的空格。
select trim(' ab c de ')
返回结果如下图:左边和右边空格被全部删除,中间空格全部保留。
upper函数
语法:upper(str),表示将字符串str中所有的字母全部转换为大写。
示例:
select upper('abcde')
返回结果如下图:小写的【abcde】变成大写的【ABCDE】。
lower函数
语法:lower(str),表示将字符串str中所有的字母全部转换为小写。
示例:
select lower('ABCDE')
返回结果如下图:大写的【ABCDE】变成小写的【abcde】。
lpad函数
语法:lpad(str,len,padstr),表示在字符串str的最左侧填充指定的字符串padstr,直到达到指定的长度len,返回填充后的字符串,如果填充后str的长度大于len,则会对padstr进行截取以保证填充后的str长度刚好等于len。
示例:
select lpad('abc',6,'DE'); -- 返回:DEDabc
select lpad('abc',6,'D'); -- 返回:DDDabc
select lpad('abc',6,'DEFG'); -- 返回:DEFabc
rpad函数
语法:rpad(str,len,padstr),表示在字符串str的最右侧填充指定的字符串padstr,直到达到指定的长度len,返回填充后的字符串,如果填充后str的长度大于len,则会对padstr进行截取以保证填充后的str长度刚好等于len。
示例:
select rpad('abc',6,'DE'); -- 返回:abcDED
select rpad('abc',6,'D'); -- 返回:abcDDD
select rpad('abc',6,'DEFG'); -- 返回:abcDEF
concat函数
语法:concat(str1,str2,…),表示将str1、str2等多个字符串拼接起来,返回拼接后的字符串,如果有任何一个参数为NULL,则返回结果为NULL。
示例:
select concat('abc','de','f'); -- 返回:abcdef
select concat('abc','de',null); -- 返回:NULL
select concat('abc','','f'); -- 返回:abcf
concat_ws函数
语法:concat_ws(separator,str1,str2,...),表示将str1、str2等多个字符串按照指定的分隔符separator分隔后拼接起来,如果分隔符为NULL或者任何一个参与拼接的str为NULL,则返回结果为NULL。
示例:
select concat_ws('-','abc','de','f'); -- 返回:abc-de-f
select concat_ws('','abc','de','f'); --返回: abcdef
select concat_ws(NULL,'abc','de','f'); -- 返回:NULL
select concat_ws(NULL,'abc',NULL,'f'); -- 返回:NULL
instr函数
语法:instr(str, substr),表示返回子字符串substr在字符串str中第一次出现的位置,如果substr在str中没有出现,则返回0。
实例:
select instr('abcdbcfh','bc'); -- 返回:2
select instr('abcdbcfh','e'); -- 返回:0
substr函数
语法:substr(str,pos[,len]),表示从字符串str中第pos个字符开始从左往右截取指定长度len的子字符串。
注意:
len参数可选,如果没有指定截取长度参数len,则表示从pos位置开始一直截取到末尾;
如果pos大于0,则表示从开头第pos个字符位置开始截取(从左往右),如果pos小于0,则表示从倒数第pos个字符位置开始截取(从左往右),如果pos等于0,则返回结果为空。
示例:
select substr('abcdefg',1,3); -- 返回:abc
select substr('abcdefg',1,10); -- 返回:abcdefg
select substr('abcdefg',2); -- 返回:bcdefg
select substr('abcdefg',-1); -- 返回:g
select substr('abcdefg',-3); -- 返回:efg
select substr('abcdefg',-5,3); -- 返回:cde
select substr('abcdefg',-5,10); -- 返回:cdefg
select substr('abcdefg',0,5); -- 返回空
length函数
语法:length(str),返回字符串str的字节长度。对于UTF-8编码,一个中文字符占三个字节,一个英文字符占一个字节。
示例:
select length('abcde'); -- 返回:5
select length('汉字'); -- 返回:6
char_length函数
语法:char_length(str),返回字符串str的字符长度,不管是中文字符还是英文字符,都算作一个字符。
示例:
select char_length('abcde'); -- 返回:5
select char_length('汉字'); -- 返回:2
replace函数
语法:replace(str, old_str, new_str),表示对字符串str中出现的所有子字符串old_str,都用新字符串new_str进行替换,返回替换后的字符串str。
注意:如果old_str或new_str为NULL,则返回结果为NULL。
示例:
select replace('abcdebcef','bc','BC'); -- 返回:aBCdeBCef
select replace('abcdebcef','ab',''); -- 返回:cdebcef
select replace('abcdebcef','bc',NULL); -- 返回:NULL
select replace('abcdebcef',NULL,'bc'); -- 返回:NULL
select replace('abcdebcef','','h'); -- 返回:abcdebcef
reverse函数
语法:reverse(str),表示返回字符串str内容反转后的结果。
示例:
select reverse('abcde');
返回结果如下图:
char函数
语法:char(num1, [num2, ...]),表示将参数中的每一个num表示的ASCII码转换为字符,并将转换后的字符拼接起来作为返回结果,参数可以只有一个,也可以有多个。
示例:
select char(68); -- 返回:D
select char(65,66,67,68,69); -- 返回:ABCDE
ascii函数
语法:ascii(str),表示将字符串中的第一个字符转化为ASCII码,并作为返回结果。
示例:
select ascii('a'); -- 返回:97
select ascii('abcd'); -- 返回:97
原文地址:https://blog.csdn.net/qq_40018576/article/details/145244984
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!