mysql中难以理解的sql

工作中遇到这样的例子, CASE type WHEN 1 THEN '普通红包' WHEN 2 THEN '普通礼包加油卡' WHEN 3 THEN '优 惠码兑换加油卡' WHEN 4 THEN '优惠码兑换红包'  ELSE '邀请返加油卡' END
之后每次看到它,都感觉特别的高大上,于是从网上进行查找,终于了解它了,并且根据它进行了延伸,得到其他的几个难懂的SQL,在此以做备注。
 
 

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


IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否 则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定 。
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes ','no');
-> 'yes'

NULLIF(expr1,expr2)
如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为 expr1。这和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。

 

转载自:http://blog.knowsky.com/240220.htm

posted @ 2015-11-04 09:57  培杰  阅读(222)  评论(0编辑  收藏  举报