SQL中条件判断表达式有 case when then end,if() 和 ifnull()
case有两种格式,即 简单case函数 和 case搜索函数。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。
case函数
SELECT CASE WHEN FLOOR((x.mon+2)/3) =1 THEN '一季度' WHEN FLOOR((x.mon+2)/3) =2 THEN '二季度' WHEN FLOOR((x.mon+2)/3) =3 THEN '三季度' WHEN FLOOR((x.mon+2)/3) =4 THEN '四季度' ELSE NULL END
AS quarterly FROM 表名
判断字段是null时等于0,否则等于字段的内容
CASE WHEN 字段 IS NULL THEN 0 ELSE 字段 END 别名
效果
if函数
if(expre1, expre2, expre3)如果expre1为true (expre1 <> 0 and expre1 <> null),则返回expre2,否则返回expre3
SELECT 姓名,
IF(性别 = "男", 1, 0)性别
FROM 教师表
WHERE 性别 <> '';
ifnull函数
ifnull(expre1, expre2)如果expre1为 null 就返回expre2,不为 null 就返回 expre1 (0和’'不行,只能是null)
SELECT IFNULL(NULL, 10); #10
SELECT IFNULL(0, 10); #0
SELECT IFNULL('', 10); #10
SELECT IFNULL(6/0, 'hello'); #'hello'