MySQL函数——字符串函数

    字符串函数        
        字符串函数主要用来处理数据库中的字符串数据,MySQL中字符串函数有:计算字符串长度函数、字符串合并函数、字符串替换函数、字符串比较函数、查找指定字符串位置函数等。
        
        1.计算字符串字符数的函数和字符串长度的函数
            char_length(str)返回值为str所包含的字符个数。一个多字节字符算作一个单字符。
                案例:使用char_length函数计算字符串字符个数,SQL语句如下:
                    SELECT CHAR_LENGTH('date'),CHAR_LENGTH('egg');
            length(str)返回值为字符串的字节长度,使用utf8(unicode的一种变长字符编码,又称万国码)编码字符集时,一个汉字是3个字符,一个数字或字母算一个字节。
                案例:使用length函数计算字符串的长度,SQL语句如下:
                    SELECT LENGTH('date'),LENGTH('egg');
            
        2.合并字符串函数concat(s1,s2,...)、concat_ws(x,s1,s2,...)
            concat(s1,s2,...)返回结果为连接参数产生的字符串,或许有一个或多个参数,如有任何一个参数为null,则返回null。如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
                案例:使用concat函数连接字符串,SQL语句如下:
                    SELECT CONCAT('My SQL', '5.7'), CONCAT('My', NULL, 'SQL');
            concat_ws(x,s1,s2,...)代表concat with separator,是concat()的特殊形式。第一个参数x是其他参数的分隔符,分隔符的位置放在要连接的两个字符串之间。分隔符可是一个字符串,也可以是其他参数。如果分隔符为null,则结果为null,函数会忽略任何分隔符参数后的null值。
                案例:使用concat_ws函数连接带分隔符的字符串,SQL语句如下:
                    SELECT CONCAT_WS('-', '1', '2', '3'), CONCAT_WS('*', '1', NULL, '2');
        
        3.替换字符串函数insert(s1,x,len,s2)
            insert(s1,x,len,s2)返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符。如果x超过字符串长度,则返回值为原始字符串。假如len长度大于其他字符串的长度,则从位置x开始替换。若任何一个参数为null,则返回值为null。
                案例:使用insert函数进行字符串替代操作,SQL语句如下:
                    SELECT INSERT('Quest', 2, 4, 'what') AS col1, INSERT('Quest', - 1, 4, 'what') AS col2, INSERT('Quest', 3, 100, 'wh') AS col3;
        
        4.字母大小写转换函数
            lower(str)或者lcase(str)可以将字符串str中的字母字符全部转换成小写字母。
                案例:使用lower或者lcase函数将字符串中所有字母转换为小写,SQL语句如下:
                    SELECT LOWER('BEAUTIFUL'), LCASE('Well');
            upper(str)或者ucase(str)可以将字符串str中的字母字符全部转换成大写字母。
                案例:使用upper或者ucase函数将字符串中所有字母转换为大写,SQL语句如下:
                    SELECT UPPER('black'),ucase('BLack');
        
        5.获取指定长度的字符串的函数left(s,n)和right(s,n)
            left(s,n)返回字符串s开始的最左边n个字符
                案例:使用left函数返回字符串左边的字符,SQL语句如下:
                    SELECT LEFT('football',5);
            right(s,n)返回字符串s中最右边n个字符
                案例:使用right函数返回字符串中右边的字符,SQL语句如下:
                    SELECT RIGHT('football', 4);
        
        6.填充字符串的函数lpad(s1,len,s2)和rpad(s1,len,s2)
            lpad(s1,len,s2)返回字符串s1,其左边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回值缩短至len字符长度。
                案例:使用lpad函数对字符串进行填充操作,SQL语句如下:
                    SELECT LPAD('hello', 4, '?'), LPAD('hello', 10, '?');
            rpad(s1,len,s2)返回字符串s1,其右边被字符串s2填补至len字符长度。假如s1的长度大于len,则返回值被缩至len字符长度。
                案例:使用rpad函数对字符串进行填充操作,SQL语句如下:
                    SELECT RPAD('hello', 4, '?'), RPAD('hello', 10, '?');
            
        7.删除空格的函数ltrim(s),rtrim(s)和trim(s)
            ltrim(s)返回字符串s,字符串左侧空格字符被删除。
                案例:使用ltrim函数删除字符串左边的空格,SQL语句如下:
                    SELECT '( book )', CONCAT('(', LTRIM(' book '), ')');
            rtrim(s)返回字符串s,字符串右侧空格字符被删除。
                案例:使用rtrim函数删除字符串右边的空格,SQL语句如下:
                    SELECT '( book )', CONCAT('(', RTRIM(' book '), ')');
            trim(s)返回字符串s,删除两侧的空格字符。
                案例:使用trim函数删除字符串两侧的空格,SQL语句如下:
                    SELECT '( book )', CONCAT('(', TRIM(' book '), ')');
            
        8.删除指定字符串的函数trim(s1 from s)
            trim(s1 from s)删除字符串s中两端所有的子字符串s1。s1为可选项,在未指定的情况下,删除空格。
                案例:使用trim函数删除字符串两端的字符,SQL语句如下:
                    SELECT TRIM('xy' FROM 'xyboxyokxxyxy');
        
        9.重复生成字符串的函数repeat(s,n)
            repeat(s,n)返回一个由重复的字符串s组成的字符串,字符串s的数目等于n。若n≤0,则返回一个空字符串。若s或n为null,则返回null。
                案例:使用repeat函数重复生成相同的字符串,SQL语句如下:
                    SELECT REPEAT('ok', 3);
        
        10.空格函数space(n)和替换函数replace(s,s1,s2)
            space(n)返回一个由n个空格组成的字符串。
                案例:使用space函数生成由空格组成的字符串,SQL语句如下:
                    SELECT CONCAT('(', SPACE(6), ')');
            replace(s,s1,s2)使用字符串s2替代s中所有的字符串s1。
                案例:使用repleace函数进行字符串替代操作,SQL语句如下:
                    SELECT REPLACE('xxx.mysql.com', 'x', 'w');
        
        11.比较字符串大小的函数strcmp(s1,s2)
            strcmp(s1,s2)若所有的字符串均相同,则返回0;若根据当前分类次序,第一个参数小于第二个,则返回-1,其他情况返回1。
                案例:使用strcmp函数比较字符串大小,SQL语句如下:
                    SELECT STRCMP('txt', 'txt2'), STRCMP('txt2', 'txt'), STRCMP('txt', 'txt');
        
        12.获取子串的函数substring(s,n,len)和mid(s,n,len)
            substring(s,n,len)带有len参数格式,从字符串s返回一个长度同len字符相同的子字符串,起始位置n。也可能对n使用一个负值。假如这样,则子字符串的位置起始于字符串结尾的n个字符,即倒数第n个字符,而不是字符串的开头位置。
                案例:使用substring函数获取指定位置处的子字符串,SQL语句如下:
                    SELECT SUBSTRING('breakfast', 5) AS col1, SUBSTRING('breakfast', 5, 3) AS col2, SUBSTRING('lunch', - 3) AS col3, SUBSTRING('lunch', - 5, 3) AS col4;
            mid(s,n,len)与substring(s,n,len)的作用相同。
                案例:使用mid函数获取指定位置的子字符串,SQL语句如下:
                    SELECT MID('breakfast', 5) AS col1, MID('breakfast', 5, 3) AS col2, MID('lunch', - 3) AS col3, MID('lunch', - 5, 3) AS col4;
        
        13.匹配子串开始位置的函数locate(str1,str)、position(str1 in str)、instr(str,str1)
            locate(str1,str)、position(str1 in str)、instr(str,str1)三个函数作用相同,返回子字符串str1在str中开始位置。
                案例:使用locate,positon,insert函数查找字符串中指定子字符串的开始位置,SQL语句如下:
                    SELECT LOCATE('ball', 'football'), POSITION('ball' IN 'football'), INSTR('ball', 'football');
        
        14.字符串逆序函数reverse(s)
            reverse(s)将字符串s反转,返回的字符串的顺序和s字符串顺序相反。
                案例:使用reverse函数反转字符串,SQL语句如下:
                    SELECT REVERSE('abc');
                    
        15.返回指定位置的字符串函数elt(n,s1,s2,s3,...,sn)
            elt(n,s1,s2,s3,...,sn)若n=1,则返回值为s1,若n=2,则返回s2,以此类推若n小于1或者大于参数的数目,则返回null。
                案例:使用etl函数返回指定位置字符串,SQL语句如下:
                    SELECT ELT(3, '1', '2', '3'), ELT(3, '1', '2');
            
        16.返回指定字符串位置的函数fleld(s,s1,s2,...)
            fleld(s,s1,s2,...)返回字符串s在列表s1,s2,...中第一次出现的位置,在找不到s的情况下,返回值为0,如果s为null,则返回值为0,原因是null不能同任何值进行同等比较。
                案例:使用field函数返回指定字符串第一次出现的位置,SQL语句如下:
                    SELECT FIELD('Hi', 'hihi', 'Hey', 'Hi', 'bas') AS col1, FIELD('Hi', 'Hey', 'Lo', 'Hilo', 'foo') AS col2;
        
        17.返回子串位置的函数find_in_set(s1,s2)
            find_in_set(s1,s2)返回字符串s1在字符串列表s2中出现的位置,字符串列表是一个由多个逗号','分开的字符串组成的列表。如果s1不在s2或s2为空字符串,则返回值为0。如果任意一个参数为null,则返回值为null。这个函数在第一个参数包含一个逗号','时将无法运行。
                案例:使用find_in_set()函数返回子字符串在字符串列表中的位置,SQL语句如下:
                    SELECT FIND_IN_SET('Hi', 'hihi,Hey,hi,bas');
        
        18.选取字符串的函数make_set(x,s1,s2,...)
            make_set(x,s1,s2,...)返回由x的二进制数指定的相应位的字符串组成的字符串,s1对应比特1,s2对应比特01,以此类推。s1,s2,...中的null值不会被添加到结果中。
                案例:使用make_set函数根据二进制位选取指定字符串,SQL语句如下:
                    SELECT MAKE_SET(1, 'a\'b', 'c') AS col1, MAKE_SET(1 | 4, 'hello', 'nice', 'world') AS col2, MAKE_SET(1 | 4, 'hello', 'nice', NULL, 'wrold') AS col3, MAKE_SET(0, 'a', 'b', 'c') AS col4;

 

你可能感兴趣的:(MySql)