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

本文详细介绍了SQL中的控制流程函数(如CASE、IF、IFNULL和NULLIF)及字符串处理函数(包括CHAR_LENGTH、FORMAT、INSERT、INSTR、LEFT、RIGHT、LENGTH、LTRIM、RTRIM、TRIM、STRCMP、CONCAT、SUBSTRING)。通过实例演示了如何使用这些函数进行条件判断和字符串操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控制流程函数:

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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值