在Oracle数据库中,条件判断主要通过IF语句和CASE表达式实现,两者适用场景和语法有所不同:
-
IF语句
- 仅用于PL/SQL代码块中,不支持直接嵌入SQL语句
- 基础语法结构:
-- IF-THEN结构
IF condition THEN
statements;
END IF;-- IF-THEN-ELSE结构
IF condition THEN
statements1;
ELSE
statements2;
END IF;-- 多条件ELSIF结构
注意ELSIF的拼写(非ELSEIF)
IF condition1 THEN
statements1;
ELSIF condition2 THEN
statements2;
ELSE
statements3;
END IF;
-
CASE表达式
- 可在SQL和PL/SQL中使用,支持SELECT/UPDATE等DML语句
- 两种形式:
-- 简单CASE(值匹配)
CASE column_name
WHEN value1 THEN result1
WHEN value2 THEN result2
ELSE default_result
END;-- 搜索式CASE(条件判断)
字符串需用单引号包裹,AND优先级高于OR
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END;
-
核心区别
特性 IF语句 CASE表达式 使用范围 仅PL/SQL SQL和PL/SQL均可 嵌套能力 支持多层嵌套 支持多层嵌套 返回值 执行语句块 返回标量值 条件逻辑 必须完整条件分支 ELSE子句可选
典型应用场景:
- 数据转换时优先使用CASE(如将数值转为文字描述)
- 流程控制逻辑使用IF(如根据条件执行不同PL/SQL块)
- 在SQL语句中必须使用CASE实现条件判断