我们在编程中基本有四种流程控制。
- 循环控制 ——while、do……while、for
- 选择控制(分支控制)——if、switch
- 转向控制——break、continue、return
- 异常处理
其实在数据库编程中应该也有这几种流程控制,比如存储过程,函数,但这些应该会限于存储过程和函数。
然而我们在编写SQL执行语句的时候我么可以使用流程控制。这里(MYSQL)可以有选择控制,语法有如下三种。
一、CASE
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
在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。
二、IF
IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
三、IFNULL
IFNULL(expr1,expr2)
假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。