现在的位置: 首页 > 综合 > 正文

MySQL控制流程函数和字符串函数

2018年02月19日 ⁄ 综合 ⁄ 共 2722字 ⁄ 字号 评论关闭
文章目录

控制流程函数:

1、CASE

CASE value WHEN [compare-value] THEN result [WHEN[compare-value] THEN result...][ELSE result] END;
例:select case 1 when 1 then 'A' when 2 then 'B' else 'C' end;--返回 A

2、IF
IF(expr1,expr2,expr3)
如果expr1是TRUE(expr1<>0 and expr1<>NULL),则IF()的返回值为expr2;否则返回值则为expr3。
例:select if(1>2,'yes','no');--返回 no

3、IFNULL
IFNULL(expr1,expr2)
假如expr1不为NULL,则IFNULL()的返回值为expr1;否则返回值为expr2.

4、NULLIF
NULLIF(expr1,expr2)
如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为expr1.

字符串函数:

1、CHAR_LENGTH(str)
返回值为字符串str的长度,单位为字符

2、FORMAT(X,D)
将数字X的格式写为'#,###,###.##',以四舍五入的方式保留小数点后的D位,并将结果以字符的形式返回。若D为0,则返回结果不带有小数点,或不含小数部分。
例:SELECT FORMAT(12332.123456,4);--返回12332.1234(字符)

3、INSERT(str,pos,len,newstr)
返回字符串str,其子字符串起始于pos位置、长度为len的字符被字符串newstr取代。如果pos超过字符串str长度,则返回值为原始字符串str。假如len的长度大于其他字符串的长度,则从位置pos开始替换。若任何一个参数为null,则返回值为NULL。
例:SELECT INSERT('Quadratic',3,4,'What');--返回'QuWhattic'
    SELECT INSERT('Quadratic',3,100,'What');--返回'QuWhat'

4、INSTR(str,substr)
返回字符串str中子字符串substr的第一个出现的位置
例:SELECT INSTR('foobarbar','bar');--返回4

5、LEFT(str,len)
返回从字符串str开始的len最左字符
例:SELECT LEFT('foobarbar',6);--返回'foobar'

RIGHT(str,len)
从字符串str开始,返回最右len字符
例:SELECT RIGHT('foobarbar',6);--返回'barbar'

6、LENGTH(str)
返回值为字符串str的长度,单位为字节。一个多字节字符算作多字节,这意味着对于一个包含5个2字节字符的字符串,LENGTH()的返回值为10,而CHAR_LENGTH()的返回值为5。

7、LTRIM(str)
返回字符串str,其引导空格字符被删除
例:SELECT LTRIM(' barbar');--返回'barbar'

      RTRIM(str)
     返回字符串str,结尾空格字符被删去
     SELECT RTRIM('barbar ');--返回'barbar'

    TRIM([{ BOTH | LEADING | TRAILING }[ remstr ] FROM ] str)
    返回字符串str,其中所有remstr前缀和/或后缀都已被删除。若分类符BOTH、LEADING或TRAILING中没有一个是给定的,则默认为BOTH。remstr为可选项,在未指定的情 况下,可删除空格。
    例:SELECT TRIM(' bar ');--返回'bar'
        SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');--返回'barxxx'
        SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');--返回'bar'
            SELECT TRIM(TRAILING 'xxx' FROM 'xxxbarxxx');--返回'xxxbar'

8、STRCMP(expr1,expr2)
若所有的字符串均相同,则返回0,若根据当前分类次序,第一个参数小于第二个,则返回-1,其它情况返回1。
例:SELECT STRCMP('text','text2');--返回-1
    SELECT STRCMP('text2','text');--返回1
     SELECT STRCMP('text','text');--返回0

9、CONCAT(str1,str2,...)
返回结果为连接参数产生的字符串。如果任何一个参数为NULL,则返回值为NULL。允许有一个或多个参数,如果所有参数均为非二进制字符串,则结果为非二进制字符串;有些编译器:如果自变量中含有任一个二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型cast:SELECT CONCAT(CAST(int_col AS CHAR),char_col)
例:SELECT CONCAT('My','S','QL');--返回‘MySQL’
    SELECT CONCAT('My','S','QL',NULL);--返回NULL

10、SUBSTRING(str,pos),SUBSTRING(str FROM pos),SUBSTRING(str,pos,len),SUBSTRING(str FROM pos FOR len)
不带有len参数的格式从字符串str返回一个子字符串,起始于位置pos;带有len参数的格式从字符串str返回一个长度为len的子字符串,起始于位置pos;使用FROM的格式为标准的SQL语法。也可对pos使用一个负值,则子字符串的位置起始于字符串结尾的pos字符,而不是字符串的开头位置。
例:SELECT SUBSTRING('Quadratically',5);--返回'ratically'
    SELECT SUBSTRING('foobarbar' FROM 4);--返回'barbar'
    SELECT SUBSTRING('Quadratically',5,6);--返回'ratica'
    SELECT SUBSTRING('Quadratically',-5);--返回'cally'
    SELECT SUBSTRING('Quadratically',-5,3);--返回'cal'
    SELECT SUBSTRING('Quadratically',FROM -5 FOR 3);--返回'cal'

抱歉!评论已关闭.