IF


SELECT id,IF(display=1,"禁止使用",display)  from jobs LIMIT 10

如果display的列的值为1 则值变成禁止使用不是的话就还是使用原来列的值

 


SELECT IF(name like "%PHP%" and name LIKE "%JAVA%",CONCAT("java",name),id) from jobs LIMIT 10

模糊匹配表达式

 

可以在where 表达式添加的都可以塞进这个if 表达式中

 

IFNULL

 


SELECT id,IFNULL(deleted_at,"已经删除了") from jobs  LIMIT 10

 

判断列的值是否为null 为null 就替换成其他值

其他这个表达式也可以替换成

SELECT id,IF(deleted_at is null,"已经删除了",deleted_at)  from jobs LIMIT 10

 

 

CASE

这个就相当于逻辑语言的 switch case default


SELECT id,case
    WHEN wage=56 THEN
 "小时工"
 WHen wage=20 THEN
 "正式工"
    ELSE
 "临时工"
END
 from jobs LIMIT 10

 

根据这个wage 字段不同值返回不同的信息,最后的else 就相当于default的意思,这里面 每一个when匹配成功之后,后面的when 就不在匹配,相当于自己加上brek了,当然也可以同时匹配多个列,而且where 可以使用的表达式也可以塞进去