6.2MySQL中的字符串函数

内容来自《MySQL从入门到精通》清华大学出版社一书的内容,随看书随打打笔记,会不断补充

字符串函数有:计算字符串长度函数,字符串合并函数,字符串替换函数,字符串比较函数,查找指定字符串位置函数等。

6.2.1计算字符串字符数的函数和字符串长度的函数

     CHAR_LENGTH(str)返回值为字符串str所包含的字符个数。一个多字节字符算作一个单字符。

     6.2MySQL中的字符串函数_第1张图片

     LENGTH(str)返回值为字符串的字节长度,使用utf-8编码字符集,一个汉字是三字节,一个数字或一个字母算一个字节。

     6.2MySQL中的字符串函数_第2张图片

6.2.2合并字符串CONCAT(s1,s2,..),CONCAT_WS(x,s1,s2,..)

         CONCAT(s1,s2,..)返回结果为连接参数时产生的字符串,或许有一个或多个参数。如有任何一个参数为NULL,则返回值为NULL。如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。

6.2MySQL中的字符串函数_第3张图片

       CONCAT_WS(x,s1,s2,..),WS为with separator。第一个参数x是其他参数的分隔符,分隔符的位置要放在要连接到两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值。

6.2.3替换字符串的函数INSERT(s1,x,len,s2)

       INSERT(s1,x,len,s2)返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符。如果x超过字符串长度,则返回值为原始字符串。假如len的长度大于其他字符串的长度,则从位置x开始替换。若任何一个参数为NULL,则返回值为NULL。

6.2MySQL中的字符串函数_第4张图片

第二个函数,起始位置-1超出了字符串长度,直接返回原字符;第三个函数,替换长度超出了原字符串长度,则从第三个字符开始,截取后面所有的字符。

6.2.4字母大小写转换函数

LOWER(str)或者LCASE(str)可以将字符串str中的字母字符全部转换城小写字母。

6.2MySQL中的字符串函数_第5张图片

UPPER(str)或者UCASE(str)可以将字符串str中的字母字符全部转换成大写字母。

6.2MySQL中的字符串函数_第6张图片

6.2.5 获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)

LEFT(s,n)返回字符串s开始的最左边n个字符。

RIGHT(s,n)返回字符串最右边的n个字符。

6.2MySQL中的字符串函数_第7张图片

6.2.6填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)

LPAD(s1,len,s2)返回字符串s1,其左边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回值被缩短至len字符。

RPAD(s1,len,s2)返回字符串s1,其右边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回值被缩短至len字符。

6.2MySQL中的字符串函数_第8张图片

       字符串“hello”的长度大于4,不需要填充,因此('hello',4,'??')只返回被缩短的长度为4的子串“hell",而另一个中,其长度小于10,因此在左(右)填充?至10位。

6.2.7 删除空格的函数LTRIM(s),RTRIM(s)和TRIM(s)

LTRIM(s)返回字符串s,字符串左侧空格字符被删除。

RTRIM(s)返回字符串s,字符串右侧空格字符被删除。

TRIM(s)返回字符串s,字符串两侧空格字符被删除。

6.2MySQL中的字符串函数_第9张图片

CONCAT的作用是为了连接两侧括号,以便显示空格。

6.2.8删除指定字符串的函数TRIM(s1 from s)

TRIM(s1 from s)删除字符串s中两端所有的子字符串s1。s1为可选项,在未指定情况下,删除空格。

6.2MySQL中的字符串函数_第10张图片

不对中间相同内容进行删除。

6.2.9重复生成字符串的函数REPEAT(s,n)

REPEAT(s,n)返回一个由重复字符串s组成的字符串,字符串s的数目等于n。若n<=0,则返回一个空字符串。若s或n为NULL,则返回NULL。

6.2MySQL中的字符串函数_第11张图片

6.2.10空格函数SPACE(n)和替换函数REPLACE(s,s1,s2)

SPACE(n)返回一个由n个空格组成的字符串。

6.2MySQL中的字符串函数_第12张图片

REPLACE(s,s1,s2)使用字符串s2替代字符串s中所有的字符串s1

6.2MySQL中的字符串函数_第13张图片

6.2.11比较字符串大小的函数STRCMP(s1,s2)

STRCMP(s1,s2)若所有的字符串均相同,则返回0;若根据当前分类次序,第一个参数小于第二个,则返回-1,其他情况返回1。

6.2MySQL中的字符串函数_第14张图片

6.2.12获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len)

        SUBSTRING(s,n,len)带有len参数的格式,从字符串s返回一个长度同len字符相同的子字符串,起始于位置n。也可能对n使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的n字符,即倒数第n个字符,而不是字符串的开头位置。

6.2MySQL中的字符串函数_第15张图片

('lunch', -3) 从结尾的第三个位置开始到字符串结尾的子字符串

SUBSTRING('lunch', -5, 3)从结尾开始的第五个字符开始,长度为3的字符串

         MID(s,n,len)同SUBSTRING(s,n,len)的作用相同。

如果对len使用的是一个小于1的值,则结果始终为空字符串。

6.2.13匹配子串开始位置的函数

         LOCATE(str1,str),POSITION(str1 IN str)和INSTR(str,str1)3个函数作用相同,返回子字符串str1在字符串str中的开始位置。

6.2MySQL中的字符串函数_第16张图片

6.2.14字符串逆序的函数REVERSE(s)

REVERSE(s)将字符串s反转,返回的字符串的顺序和s字符串顺序相反。

6.2MySQL中的字符串函数_第17张图片

6.2.15返回指定位置的字符串的函数

ELT(N,字符串1,字符串2,...,字符串N)若N等于1,则返回值为字符串1,依次类推。若N小于1或大于参数的数目,则返回值为NULL。

6.2MySQL中的字符串函数_第18张图片

6.2.16返回指定字符串位置的函数FIELD(s,s1,s2,...)

FIELD(s,s1,s2,...)返回字符串s在列表s1,s2,..中第一次出现的位置,在找不到s的情况下返回值为0。如果s为NULL,则返回值为0,原因是NULL不能同任何值进行同等比较。

6.2MySQL中的字符串函数_第19张图片

6.2.17返回子串位置的函数FIND_IN_SET(s1,s2)

FIND_IN_SET(s1,s2)返回字符串s1在字符串列表s2中出现的位置,字符串列表是由多个逗号‘,’分开的字符串组成的列表。如果s1不在s2或s2为空字符串,则返回值为0。如果任意一个参数为NULL,则返回值为NULL。这个函数在第一个参数包含一个逗号‘,’时将无法正常运行。

6.2MySQL中的字符串函数_第20张图片

6.2.18选取字符串的函数MAKE_SET(x,s1,s2,...)

MAKE_SET(x,s1,s2,...)返回由x的二进制数指定的相应位的字符串组成的字符串,s1对应比特1,s2对应比特01,以此类推。s1,s2..中的NULL值不会被添加到结果中。

6.2MySQL中的字符串函数_第21张图片

1的二进制0001,(1,'a','b','c')返回第一个字符串

4的二进制0100,1|4进行位或运算后,结果为0101,(1 | 4,'hello','nice','world') 返回从左往右的第一个和第三个字符串组成的字符串。

 

你可能感兴趣的:(MySQL)