SQL之IF表达式
MySQL的IF既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:
IF表达式语法
MySQL 中的 IF 函数可以根据指定的条件返回不同的值。
IF(condition, value_if_true, value_if_false)
其中, condition 是要测试的条件;如果 condition 为真,则返回 value_if_true ;否则返回 value_if_false 。
IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
示例
查找出售价为 50 的书,如果书名是“java ”,就标注为“已售完”
select *,if(book_name='java','已卖完','有货') as product_status from book where price =50;
假设我们有一个 scores 表,其中包含学生的名字和成绩。上面的查询会根据学生的成绩,返回一个新的 result 列,如果成绩大于等于 60 分,则为 "Pass",否则为 "Fail"。
SELECT name, IF(score >= 60, 'Pass', 'Fail') AS result
FROM scores;
IF 函数的嵌套使用也是非常常见的。例如:
SELECT name, IF(score >= 90, 'A', IF(score >= 80, 'B', IF(score >= 70, 'C', 'D'))) AS grade
FROM scores;
上面的查询根据学生的成绩,返回一个新的 grade 列,如果成绩大于等于 90 分,则为 "A",否则继续比较成绩是否大于等于 80 分,依此类推,直到找到对应的等级为止。