日期:2014-05-16 浏览次数:20779 次
一. 控制流程函数 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', NULL, '阿蜜果'); 输出:'Hello, 阿蜜果' 4. INSERT(str,pos,len,newstr) 返回字符串 str, 其子字符串起始于 pos位置和长期被字符串 newstr取代的len字符。 如果pos超过字符串长度,则返回值为原始字符串。 假如len的长度大于其它字符串的长度,则从位置pos开始替换。若任何一个参数为null,则返回值为NULL。 Eg1. SELECT INSERT('hello,Amigo', 7, 5, 'Locus'); 输出:hello,Locus 5. INTER(str, substr) 返回字符串 str中子字符串的第一个出现位置。 Eg1. SELECT INSTR('hello,Amigo', 'Amigo'); 输出:7 6. LENGTH(str) 返回值为字符串str的长度,单位为字节。一个多字节字符算作多字节。 Eg1. SELECT LENGTH('Amigo'); 输出:5 7. LOWER(str) 返回字符串 str以及所有根据最新的字符集映射表变为小写字母的字符。 Eg1. SELECT LOWER('AMIGO'); UPPER(str)函数的用法与此类似,在此不再赘述。不过它是将字符串转换为大写的。 输出:amigo 8. LPAD(str, len, padstr) 返回字符串 str, 其左边由字符串padstr 填补到len字符长度。假如str 的长度大于len, 则返回值被缩短至len字符。 Eg1. SELECT LPAD('hi',4,'!!'); 输出:'!!hi' Eg2. SELECT LPAD('hi',1,'!!'); 输出:'h' RPAD(…)函数用法与此类似,在此不再赘述。 9. REPEAT(str,count) 返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count。 若 count <= 0,则返回一个空字符串。若str或count 为 NULL,则返回NULL。 Eg1. SELECT REPEAT('Amigo', 2); 输出:'AmigoAmigo' 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 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。 Eg1. SELECT SUBSTRING('hello,Amigo',6); 输出:Amigo Eg2. SELECT SUBSTRING('hello,Amigo', 6, 4); 输出:Amig 三. 数值函数 1. ABS(X) 返回X的绝对值。 Eg1. SELECT ABS(-5); 输出:5 2. FLOOR(X) 返回不大于X的最大整数值 。 Eg1. SELECT FLOOR(2.56); 输出:2 Eg2. SELECT FLOOR(-2.56) 输出:-3 3. MOD(N,M) , N % M N MOD M 模操作。返回N 被 M除后的余数。 Eg1. SELECT MOD(237, 10); 输出:7 Eg2. SELECT 237 % 10; 输出:7 Eg3. SELECT 237 MOD 10; 输出:7 4. POW(X, Y),POWER(X, Y) 返回X的Y乘方的结果值。 Eg1. SELECT POW(2, 3); 输出:8 Eg2. SELECT POWER(2, 4) 输出:16 5. RAND(),RAND(N) 返回一个随机浮点值 v,范围在 0 到1 之间 (即, 其范围为 0 ≤ v ≤ 1.0)。若已指定一个整数参数 N,则它被用作种子值,用来产生重复序列。 Eg1. SELECT RAND(20); 输出:0.15888261251047 Eg2. SELECT RAND(); 输出:0.9233482386203 若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i +