内容来自《MySQL从入门到精通》清华大学出版社一书的内容,随看书随打打笔记,会不断补充
字符串函数有:计算字符串长度函数,字符串合并函数,字符串替换函数,字符串比较函数,查找指定字符串位置函数等。
CHAR_LENGTH(str)返回值为字符串str所包含的字符个数。一个多字节字符算作一个单字符。
LENGTH(str)返回值为字符串的字节长度,使用utf-8编码字符集,一个汉字是三字节,一个数字或一个字母算一个字节。
CONCAT(s1,s2,..)返回结果为连接参数时产生的字符串,或许有一个或多个参数。如有任何一个参数为NULL,则返回值为NULL。如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
CONCAT_WS(x,s1,s2,..),WS为with separator。第一个参数x是其他参数的分隔符,分隔符的位置要放在要连接到两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值。
INSERT(s1,x,len,s2)返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符。如果x超过字符串长度,则返回值为原始字符串。假如len的长度大于其他字符串的长度,则从位置x开始替换。若任何一个参数为NULL,则返回值为NULL。
第二个函数,起始位置-1超出了字符串长度,直接返回原字符;第三个函数,替换长度超出了原字符串长度,则从第三个字符开始,截取后面所有的字符。
LOWER(str)或者LCASE(str)可以将字符串str中的字母字符全部转换城小写字母。
UPPER(str)或者UCASE(str)可以将字符串str中的字母字符全部转换成大写字母。
LEFT(s,n)返回字符串s开始的最左边n个字符。
RIGHT(s,n)返回字符串最右边的n个字符。
LPAD(s1,len,s2)返回字符串s1,其左边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回值被缩短至len字符。
RPAD(s1,len,s2)返回字符串s1,其右边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回值被缩短至len字符。
字符串“hello”的长度大于4,不需要填充,因此('hello',4,'??')只返回被缩短的长度为4的子串“hell",而另一个中,其长度小于10,因此在左(右)填充?至10位。
LTRIM(s)返回字符串s,字符串左侧空格字符被删除。
RTRIM(s)返回字符串s,字符串右侧空格字符被删除。
TRIM(s)返回字符串s,字符串两侧空格字符被删除。
CONCAT的作用是为了连接两侧括号,以便显示空格。
TRIM(s1 from s)删除字符串s中两端所有的子字符串s1。s1为可选项,在未指定情况下,删除空格。
不对中间相同内容进行删除。
REPEAT(s,n)返回一个由重复字符串s组成的字符串,字符串s的数目等于n。若n<=0,则返回一个空字符串。若s或n为NULL,则返回NULL。
SPACE(n)返回一个由n个空格组成的字符串。
REPLACE(s,s1,s2)使用字符串s2替代字符串s中所有的字符串s1
STRCMP(s1,s2)若所有的字符串均相同,则返回0;若根据当前分类次序,第一个参数小于第二个,则返回-1,其他情况返回1。
SUBSTRING(s,n,len)带有len参数的格式,从字符串s返回一个长度同len字符相同的子字符串,起始于位置n。也可能对n使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的n字符,即倒数第n个字符,而不是字符串的开头位置。
('lunch', -3) 从结尾的第三个位置开始到字符串结尾的子字符串
SUBSTRING('lunch', -5, 3)从结尾开始的第五个字符开始,长度为3的字符串
MID(s,n,len)同SUBSTRING(s,n,len)的作用相同。
如果对len使用的是一个小于1的值,则结果始终为空字符串。
LOCATE(str1,str),POSITION(str1 IN str)和INSTR(str,str1)3个函数作用相同,返回子字符串str1在字符串str中的开始位置。
REVERSE(s)将字符串s反转,返回的字符串的顺序和s字符串顺序相反。
ELT(N,字符串1,字符串2,...,字符串N)若N等于1,则返回值为字符串1,依次类推。若N小于1或大于参数的数目,则返回值为NULL。
FIELD(s,s1,s2,...)返回字符串s在列表s1,s2,..中第一次出现的位置,在找不到s的情况下返回值为0。如果s为NULL,则返回值为0,原因是NULL不能同任何值进行同等比较。
6.2.17返回子串位置的函数FIND_IN_SET(s1,s2)
FIND_IN_SET(s1,s2)返回字符串s1在字符串列表s2中出现的位置,字符串列表是由多个逗号‘,’分开的字符串组成的列表。如果s1不在s2或s2为空字符串,则返回值为0。如果任意一个参数为NULL,则返回值为NULL。这个函数在第一个参数包含一个逗号‘,’时将无法正常运行。
6.2.18选取字符串的函数MAKE_SET(x,s1,s2,...)
MAKE_SET(x,s1,s2,...)返回由x的二进制数指定的相应位的字符串组成的字符串,s1对应比特1,s2对应比特01,以此类推。s1,s2..中的NULL值不会被添加到结果中。
1的二进制0001,(1,'a','b','c')返回第一个字符串
4的二进制0100,1|4进行位或运算后,结果为0101,(1 | 4,'hello','nice','world') 返回从左往右的第一个和第三个字符串组成的字符串。