标签:
Mysql中有四种控制流程函数
Name | Description |
---|---|
CASE |
Case operator |
IF() |
If/else construct |
IFNULL() |
Null if/else construct |
NULLIF() |
Return NULL if expr1 = expr2 |
1、case流程
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
第一种情况:当value = compare_value时 返回result
第二种情况:当condition 为真时返回result
如果没有匹配项,将返回else后面的result,如果没有else语句将返回null
eg:
mysql> SELECT CASE 1 WHEN 1 THEN ‘one‘ -> WHEN 2 THEN ‘two‘ ELSE ‘more‘ END; -> ‘one‘ mysql> SELECT CASE WHEN 1>0 THEN ‘true‘ ELSE ‘false‘ END; -> ‘true‘ mysql> SELECT CASE BINARY ‘B‘ -> WHEN ‘a‘ THEN 1 WHEN ‘b‘ THEN 2 END; -> NULL
2、if流程 -- if(expr1,expr2,expr3)
如果 expr1 为真,将返回expr2,否则返回expr3
mysql> SELECT IF(1>2,2,3); -> 3 mysql> SELECT IF(1<2,‘yes‘,‘no‘); -> ‘yes‘ mysql> SELECT IF(STRCMP(‘test‘,‘test1‘),‘no‘,‘yes‘); -> ‘no‘
3、ifnull(expr1,expr2)流程 --- 如果expr1 不为NULL,返回expr1,否则返回expr2
mysql> SELECT IFNULL(1,0); -> 1 mysql> SELECT IFNULL(NULL,10); -> 10 mysql> SELECT IFNULL(1/0,10); -> 10 mysql> SELECT IFNULL(1/0,‘yes‘); -> ‘yes‘
4、nullif(expr1,expr2)流程 --- 如果expr1 = expr2则返回null,否则返回expr1;等同于 case when expr1 = expr2 then null else expr1 end
mysql> SELECT NULLIF(1,1); -> NULL mysql> SELECT NULLIF(1,2); -> 1
标签:
原文地址:http://www.cnblogs.com/alaya/p/4389833.html