本文讲述MySql5.x中最常用的一些函数,包括控制流程函数、字符串函数、数值函数、日期和时间函数,对不常用的函数略去不讲,以便开发人员查阅。
一. 控制流程函数
1.CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
该语句用于在不同情况时,执行不同的语句,实例如下:
Eg1. SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
输出:true
Eg2. SELECT CASE BINARY 'B' WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
输出:NULL
2.IF(expr1,expr2,expr3)
如果expr1返回true,则该表达式返回expr2,否则返回expr3。
Eg1. SELECT IF(1<2,'yes ','no');
输出:'yes '
Eg2. SELECT IF(STRCMP('test','test1'),'no','yes');
上例中STRCMP(expr1, expr2)这个函数在expr1小于expr2时,返回-1,相等时返回0,其余的情况返回1,在上例中返回-1,因此上例的输出为:'yes'
3.IFNULL(expr1,expr2)
该函数在expr1为NULL时,返回expr2,否则,返回expr1。
Eg1. SELECT IFNULL(1,0);
输出:1
Eg2. SELECT IFNULL(NULL,10);
输出:10
4.NULLIF(expr1,expr2)
如果expr1=expr2,则返回NULL,否则,返回expr1。
Eg1. SELECT NULLIF(1,1);
输出:NULL
Eg2. SELECT NULLIF(3,4);
输出:3
二. 字符串函数
1. ASCII(str)
返回值为字符串str 的最左字符的数值。假如str为空字符串,则返回值为 0 。假如str 为NULL,则返回值为 NULL。 ASCII()用于带有从 0到255的数值的字符。
Eg1. SELECT ASCII('2');
输出:50
Eg2. SELECT ASCII('de');
输出:100
2. CONCAT(str1,str2,...)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。
Eg1. SELECT CONCAT('Hello', ',', '阿蜜果');
输出:'Hello, 阿蜜果'
Eg2. SELECT CONCAT('Hello', NULL, '阿蜜果');
输出:NULL
3. CONCAT_WS(separator,str1,str2,...)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的NULL值。
Eg1. SELECT CONCAT_WS(',', 'Hello', '阿蜜果');
输出:'Hello, 阿蜜果'
Eg. SELECT CONCAT_WS(',', 'Hello', NU
LL, '阿蜜果');
输出:'Hello, 阿蜜果'
4. INSERT(str,pos,len,newstr)
返回字符串 str, 其子字符串起始于 pos位置和长期被字符串 newstr取代的len字符。 如果pos超过字符串长度,则返回值为原始字符