Oracle case语句是我们最常用的语句之一,下面就为您介绍Oracle case语句的语法,并举例说明,希望对您能够有所帮助。
当执行多重条件分支语句时,使用Oracle case语句更加简洁、而且效率也更好。Oracle case语句处理多重条件分支语句有两种方法,第一种方法是使用单一选择符进行等值比较。第二种方法是使用多种条件进行非等值比较。
1、使用单一选择符进行等值比较
当执行Oracle case语句执行多重条件分支时,如果条件选择符完全相同,并且条件表达式为相同条件选择,那么可以选择单一选择符进行等值比较,语法如下:
case 条件选择符
when 条件值表达式1 then 要执行的操作1;
when 条件值表达式2 then 要执行的操作2;
。。。。。。。
else
要执行的操作。
end case;
示例如下:
declare
v_count number;
begi
select count(*) into v_count from cip_temps;
case v_count
when 1 then
dbms_output.put_line('when 1操作___v_cont的值:'|| v_count);
when 5 then
dbms_output.put_line('when 5操作___v_count的值:'|| v_count);
when 10 then
dbms_output.put_line('when 10操作____v_count的值:'|| v_count);
else
dbms_output.put_line('else操作____v_cout的值:'||v_count);
end case;
end;
/
2、case使用多种条件进行比较
如果选择多个条件进行不同比较时,那么必须在when子句中指定比较条件,语法如下:
case
when 条件值表达式1 then 要执行的操作1;
when 条件值表达式2 then 要执行的操作2;
。。。。。。。
else
要执行的操作。
end case;
示例如下:
declare
v_count number;
begin
select count(*) into v_count from cip_temps;
case
when v_count>10 then
dbms_output.put_line('when 1操作___v_cont的值:'|| v_count);
when v_count>5 then
dbms_output.put_line('when 5操作___v_count的值:'|| v_count);
when v_count>4 then
dbms_output.put_line('when 10操作____v_count的值:'|| v_count);
else
dbms_output.put_line('else操作____v_cout的值:'||v_count);
end case;
end;
Oracle CASE WHEN 用法介绍
1. CASE WHEN 表达式有两种形式
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE
WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
2. CASE WHEN 在语句中不同位置的用法
2.1 SELECT CASE WHEN 用法
SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位女生*/
ELSE NULL
END) 男生数,
COUNT (CASE WHEN sex = 2 THEN 1
ELSE NULL
END) 女生数
FROM students GROUP BY grade;
2.3 WHERE CASE WHEN 用法
SELECT T2.*, T1.*
FROM T1, T2
WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
T1.SOME_TYPE LIKE 'NOTHING%'
THEN 1
WHEN T2.COMPARE_TYPE != 'A' AND
T1.SOME_TYPE NOT LIKE 'NOTHING%'
THEN 1
ELSE 0
END) = 1
2.4 GROUP BY CASE WHEN 用法
SELECT
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600 THEN '2'
WHEN salary > 600 AND salary <= 800 THEN '3'
WHEN salary > 800 AND salary <= 1000 THEN '4'
ELSE NULL END salary_class, -- 别名命名
COUNT(*)
FROM Table_A
GROUP BY
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600 THEN '2'
WHEN salary > 600 AND salary <= 800 THEN '3'
WHEN salary > 800 AND salary <= 1000 THEN '4'
ELSE NULL END;
3.关于IF-THEN-ELSE的其他实现
3.1 DECODE() 函数
select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown')
from employees;
貌似只有Oracle提供该函数,而且不支持ANSI SQL,语法上也没CASE WHEN清晰,个人不推荐使用。
3.2 在WHERE中特殊实现
SELECT T2.*, T1.*
FROM T1, T2
WHERE (T2.COMPARE_TYPE = 'A' AND T1.SOME_TYPE LIKE 'NOTHING%')
OR
(T2.COMPARE_TYPE != 'A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%')
这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。
分享到:
相关推荐
### Oracle CASE 语句介绍及应用案例 #### 一、Oracle CASE 语句概述 在 Oracle 数据库中,CASE 语句是一种非常实用且灵活的条件判断表达式,它可以用于根据不同的条件返回不同的值。CASE 语句可以分为两种类型:...
Oracle CASE WHEN 多条件语句详解 CASE WHEN 语句是 SQL 中的一种条件语句,用于实现多个条件的判断和执行。它可以用来代替 IF 语句和 SWITCH 语句,在 Oracle 数据库中尤其常用。 CASE WHEN 语句的基本语法是: `...
根据给定的文件信息,以下是对Oracle SQL语句集锦中的关键知识点的详细解析: ### Oracle SQL基础操作 #### 数据定义语言(DDL) - **创建表(Create Table)**: `CREATE TABLE`语句用于在数据库中创建一个新的表...
- **PostgreSQL**: 使用 `CASE` 语句来进行条件判断。 #### 八、NULL判断函数 - **Oracle**: 提供了 `nvl(A,B)` 和 `coalesce` 函数用于处理 `null` 值。 - **PostgreSQL**: 没有 `nvl` 函数,但同样提供了 `...
1. 基本 CASE 结构语句的语法如下: ```sql CASE 选择变量名 WHEN 表达式 1 THEN 语句序列 1 WHEN 表达式 2 THEN 语句序列 2 WHEN 表达式 n THEN 语句序列 n ELSE 语句序列 n+1 END CASE; ``` 在整个结构中,...
Oracle数据库中的`Decode()`函数和`CASE`语句都是用于条件判断和数据转换的重要工具,它们各有特点,适用场景也有所不同。以下是对这两个功能的详细比较。 首先,`Decode()`函数是一个简化的条件表达式,它允许你在...
### Oracle到SQL Server存储过程语法转换详解 在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并...
### Oracle存储过程学习经典知识...通过以上内容的学习,我们可以了解到Oracle存储过程的基础概念、基本语法及其在实际开发中的应用技巧。无论是对于初学者还是有一定经验的开发者来说,掌握这些知识点都是非常重要的。
3. **控制程序流** 包括IF-THEN-ELSE、CASE语句,循环(FOR、WHILE)结构等,用于控制程序执行的逻辑路径。 4. **存储过程和函数** 是PL/SQL中的重要组件,用于封装重复性的操作或复杂的业务逻辑。它们可以在数据库...
- `CASE`语句在两个系统中也有其特定的语法结构,但具体差异未在原文中提及。 #### 游标操作 - 定义游标时,**Oracle**和**SQL Server**的语法略有不同,但核心思想一致。 - 使用游标时,两者在打开、读取、处理和...
PL/SQL块由声明部分、执行部分和异常处理部分组成,支持流程控制语句(如IF-THEN-ELSIF-ELSE、CASE)、循环(WHILE、FOR)、游标以及变量和常量的声明。 三、数据库对象 Oracle数据库包含多种对象,如表、视图、...
case 语句和 if 语句 -- ... 插入语句和异常处理 end loop; -- ... 循环打印 close m_cur; end testSandyInSert; ``` 总结,这个例子中展示了Oracle存储过程的基本结构,包括包的创建、过程的定义、游标的使用...
在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`CASE WHEN` 与 `DECODE()` 函数相似,但因其符合 ...
本“Oracle+PLSQL+语法手册”全面且详细地涵盖了这两者的各种关键概念、语法和实践应用。 一、Oracle数据库基础 Oracle数据库系统以其高可靠性、可扩展性和安全性著称,适用于企业级的数据存储和处理。主要组成部分...
其语法结构类似于SQL,但增加了流程控制语句(IF、CASE、WHILE、FOR循环)和异常处理。 5. 存储过程和函数:存储过程是一组预编译的SQL语句,可以接受参数,返回结果,并在需要时执行。函数类似,但必须返回一个值...
在"Oracle PLSQL基本语法"中,我们可以探讨以下几个关键知识点: 1. **变量声明**: 在PL/SQL中,我们需要先声明变量,指定其数据类型。例如: ```sql DECLARE var1 NUMBER; var2 VARCHAR2(20); BEGIN -- ...
- Oracle 中 `CASE` 语句更接近于 `IF...THEN...ELSE...END IF;` - SQL Server 中的 `CASE` 语句更像一个表达式,可以用于选择性地返回一个值。 11. **游标**: - Oracle 使用 `CURSOR` 关键字定义,`OPEN`、`...
学习PL/SQL的语法,如块结构、控制流程语句(IF、CASE、LOOP等)、异常处理等。 11. 分区(Partitioning):对于大型表,分区是提高查询性能的有效方法,可以按照时间、范围或其他方式对数据进行分割。 12. 权限和...
基础内容可能包括变量声明、条件控制(IF-THEN-ELSIF-ELSE、CASE语句)、循环(WHILE、FOR循环)、异常处理(BEGIN-EXCEPTION-END块)等。高级部分可能涵盖游标、子程序(函数和过程)、包的定义和使用,以及如何在...