MySQL流程控制函数
Name | Description |
---|---|
CASE |
Case operator |
IF() |
If/else construct |
IFNULL() |
Null if/else construct |
NULLIF() |
Return NULL if expr1 = expr2 |
1. IF
IF(expr1,expr2,expr3)
如果 expr1 是TRUE (即expr1<>NULL AND expr1<>0),则IF()的返回值为expr2; 否则返回值则为 expr3。
SELECT IF(status >= 0 AND status_promotion = 1, 1, 2) AS status FROM my_table;
2. IFNULL
IFNULL(expr1,expr2)
假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。
3. NULLIF
NULLIF(expr1,expr2)
如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为 expr1。
4. CASE...WHEN
4.1 CASE后面不带表达式
CASE
WHEN expression THEN 操作1
WHEN expression THEN 操作2
.......
ELSE 操作n
END
4.2 CASE后面带表达式
CASE expression
WHEN expression值1 THEN 操作1
WHEN expression值2 THEN 操作2
.......
ELSE 操作n
END
注意:1)NULL和0是等同的,0和'0'是不同的;2)如果没有ELSE,则返回NULL。
UPDATE test SET status = ( CASE status WHEN 1 THEN 0 WHEN 0 THEN 1 ELSE status END );
- 作者:水岩
- 出处:http://www.cnblogs.com/waterystone
- 本博客中未标明转载的文章归作者水岩和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果您觉得本文对您的学习有所帮助,可通过支付宝(左) 或者 微信(右) 来打赏博主,增加博主的写作动力