您的位置:首页 > 数据库 > MySQL

Mysql 从零开始(五)函数之字符串函数

2016-01-18 18:00 387 查看
一、计算字符串字符数的函数和字符长度的函数

1、char_length(str) 返回字符串str 所包含的字符个数。
一个多字节字符算作一个单字符如:char_length('中国') 结果为2.
2、length(str) 返回字符串str的字节长度。
使用UTF8编码时一个汉字是3个字节,一个数字或字母为一个字节如:length('中国')结果为6


二、合并字符串函数

1、concat(s1,s2,...)返回结果为多个参数连接产生的字符串;
a)如果参数中有NULL,则结果为NULL;
b)如果参数中有二进制字符串,则结果为二进制字符串。
2、concat_sw(x,s1,s2,...)第一个参数x是其他字符串的分隔符,位置在要连接的字符串之间,可以是一个字符串,也可以是其他参数。
a)如果分隔符为NULL,则结果为NULL;
b)如果参数为NULL,结果中会忽略为NULL的参数。


三、替换字符串函数——insert(s1,x,len,s2)

把s1从第x位置起,长度为len的部分替换为s2。
例:SELECT INSERT('hello',2,2,'what')把hello从第2位开始(序号是从1开始而不是数组里面从0)长度为2的部分即'el'替换为'what',所以结果为hwhatlo。


四、字母大小写转换函数

lower(str)和lcase(str)把字符串中的字母字符全部转成小写。
upper(str)和ucase(str)把字符串中的字母字符全部转成大写。


五、获取指定长度的字符串函数

left(s,n)返回字符串开始最左边的n个字符。如:SELECT LEFT('helloworld',5)结果为hello;
right(s,n)返回字符串开始最右边的n个字符。如:SELECT RIGHT('helloworld',5)结果为world。


六、填充字符串的函数

lpad(s1,len,s2)在字符串s1的左边填充s2,填充到len长度。如:SELECT LPAD('hello',10,'worldpace')结果为worldhello;
rpad(s1,len,s2)在字符串s1的左边填充s2,填充到len长度。如:SELECT RPAD('hello',10,'ha')结果为hellohahah。


七、删除空格的函数

ltrim(s)删除字符串s左侧的空格。如:SELECT CONCAT('(',LTRIM ('  hello   ') ,')')结果为(hello   );
rtrim(s)删除字符串s右侧的空格。如:SELECT CONCAT('(',RTRIM ('  hello   ') ,')')结果为(  hello);
trim(s)删除字符串s两侧的空格。如:SELECT CONCAT('(', TRIM('  hello   ') ,')')结果为(hello)。
连接'('和')'是为了让空格显示出来。


八、删除指定字符串的函数

trim(s1 from s)删除字符串s两端所有的子字符串s1,s1为可选项,在未指定的情况下删除空格。如:SELECT TRIM('xy'FROM 'xyxboxyxxyxy')结果为xboxyx,两端的xy都被删除而中间的并不删除。


九、重复生成字符串的函数——repeat(s,n)

返回一个由字符串s重复n次组成的字符串。如果n<=0,则结果为空;如果s或n为null,结果为null。如:SELECT REPEAT('ha',3)结果为hahaha。


十、空格函数和替换函数

space(n)返回一个由n个空格组成的字符串。如:SELECT CONCAT('(',SPACE(5),')')结果为(     )。
replace(s,s1,s2)使用字符串s2,替换字符串s中所有的s1。如:SELECT REPLACE('xxx.baidu.com','x','w')结果为www.baidu.com。


十一、比较字符串大小的函数 ——strcmp(s1,s2)

如果s1,s2所有字符都相同,结果为0,根据当前分类顺序,s1顺序在s2之前的话,返回-1,其他结果返回1。如:SELECT STRCMP('xxx','yaa')结果为-1。


十二、获取子字符串的函数

subString(s,n,len)若n为正数,则是从字符串s的第n位开始(包括第n位)长度为len的字符串;
若n为负数,则是从字符串尾部开始倒数第n个字符开始长度为len的字符串;
若len为空,则是到字符串结尾;
若len为负,则结果为null。
如:1、SELECT SUBSTRING('football',5)结果为ball
2、SELECT SUBSTRING('football',5,2)结果为ba
3、SELECT SUBSTRING('football',-4)结果为ball
4、SELECT SUBSTRING('football',-4,2)结果为ba

mid(s,n,len)用法和作用和subString(s,n,len)完全一样


十三、匹配子串开始位置的函数

locate(str1,str)、position(str1 IN str)、instr(str,str1)三个函数作用相同都是返回子串str1在str中的开始位置。
如:1、SELECT LOCATE('hell','hello')
2、SELECT POSITION('hell' IN 'hello')
3、SELECT INSTR('hello','hell')
返回结果都为1,即子串在str中开始的位置。
如果子串在字符串中找不到返回结果为0。


十四、字符串逆序的函数——reverse(s)

把字符串s逆序。SELECT REVERSE('hello')结果为olleh


十五、返回指定位置的字符串的函数——elt(n,s1,s2,s3,…)

若n为1,返回s1;
若n小于1或者大于参数的个数,则返回null。
如:SELECT ELT(3,'a1','b2','c3')   结果为c3
SELECT ELT(3,'1a','2b')结果为null


十六、返回指定字符串位置的函数——field(s,s1,s2,s3,…)

返回字符串s在字符列表中第一次出现的位置。
若找不到s则返回结果为0;
若s为null则返回结果为0。
SELECT FIELD('3','1','2','3','3','3')返回结果为3


十七、返回子串位置的函数——find_in_set(s1,s2)

返回字符串s1,在字符串列表中第一次出现的位置。s2是一个以","分割开的字符串列表。
如果s1不在s2列表中或者s2为空字符串返回结果为0;
如果任意一个参数为null则返回结果为null;
如果s1中含有","则无法得到正确结果。
和field(s,s1,s2,s3,...)作用类似,都可以返回指定字符串在字符串列表中的位置。


十八、选取字符串的函数——make_set(x,s1,s2)

返回由x的二进制指定的相应位置的字符串组成的字符串,规则是一个数的二进制用四位数表示,把这个二进制倒序排列,和s1,s2...位置对应,对应1的取出,对应0的不要。
SELECT MAKE_SET(1,'a','b','c')1的二进制表示为0001,倒叙排列为1000,s1对应1 所以结果为a
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql