Oracle CASE WHEN 用法介绍

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 =1THEN1/*sex 1为男生,2位女生*/
ELSE NULL
END) 男生数,
COUNT (CASE WHEN sex =2THEN1
ELSE NULL
END) 女生数
FROM students GROUP BY grade;
2.3 WHERE CASE WHEN 用法
SELECT T2.*, T1.*
FROM T1, T2
WHERE (CASE WHEN PARE_TYPE ='A'AND
T1.SOME_TYPE LIKE'NOTHING%'
THEN1
WHEN PARE_TYPE !='A'AND
T1.SOME_TYPE NOT LIKE'NOTHING%'
THEN1
ELSE0
END) =1
2.4 GROUP BY CASE WHEN 用法
SELECT
CASE WHEN salary <=500THEN'1'
WHEN salary >500AND salary <=600THEN'2'
WHEN salary >600AND salary <=800THEN'3'
WHEN salary >800AND salary <=1000THEN'4'
ELSE NULL END salary_class, -- 别名命名
COUNT(*)
FROM Table_A
GROUP BY
CASE WHEN salary <=500THEN'1'
WHEN salary >500AND salary <=600THEN'2'
WHEN salary >600AND salary <=800THEN'3'
WHEN salary >800AND salary <=1000THEN'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 (PARE_TYPE ='A'AND T1.SOME_TYPE LIKE'NOTHING%') OR
(PARE_TYPE !='A'AND T1.SOME_TYPE NOT LIKE'NOTHING%') 这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。

合集下载

oracle中case when用法sql

oracle中case when用法sql

oracle中case when用法sql在Oracle数据库中,`CASE WHEN`语句是一种条件表达式,允许在查询中根据不同的条件返回不同的结果。

它提供了一种灵活的方式来对数据进行逻辑判断和处理。

`CASE WHEN`语句的语法如下:```sqlCASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultNEND```在这个语法中,我们可以指定多个`WHEN`子句,每个子句后面跟着一个条件和一个结果。

当满足某个条件时,对应的结果将被返回。

如果没有条件满足,可以使用`ELSE`子句指定一个默认结果。

下面是一个简单的例子,演示了如何使用`CASE WHEN`语句:```sqlSELECTemployee_id,first_name,last_name,salary,CASEWHEN salary > 10000 THEN 'High'WHEN salary > 5000 THEN 'Medium'ELSE 'Low'END AS salary_categoryFROMemployees;```在这个例子中,我们根据员工的薪水将其划分为'High'、'Medium'和'Low'三个不同的薪水等级,并使用`CASE WHEN`语句在查询结果中创建了一个名为`salary_category`的新列。

除了基本的`WHEN`子句外,`CASE WHEN`语句还可以使用其他一些特殊的表达式,例如使用`NULL`值、使用多个条件组合、嵌套使用`CASE WHEN`等。

这些灵活的用法可以根据具体的业务需求进行调整和扩展。

总之,在Oracle中,`CASE WHEN`语句是一个非常有用的工具,可以帮助我们根据不同的条件对数据进行逻辑判断和处理,使查询结果更加灵活和符合我们的需求。

oracle case when 用法

oracle case when 用法

oracle case when 用法Oracle的CASE WHEN语句是一种条件表达式,用于根据不同的条件执行不同的操作。

它可以在SELECT、UPDATE和DELETE语句中使用,以及在PL/SQL块中使用。

CASE WHEN语句可以根据一个或多个条件来判断,并根据条件的结果执行相应的操作。

CASE WHEN语句的基本语法如下:```CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultEND```其中,condition1、condition2等是条件表达式,result1、result2等是与条件对应的结果。

ELSE子句是可选的,用于指定当所有条件都不满足时的默认结果。

下面我们将详细介绍CASE WHEN语句的用法和示例。

1. 简单CASE WHEN语句简单CASE WHEN语句用于根据一个表达式的值来判断条件,并执行相应的操作。

下面是一个简单CASE WHEN语句的示例:```SELECT column1,CASE column2WHEN 'value1' THEN 'result1'WHEN 'value2' THEN 'result2'...ELSE 'result'END AS result_columnFROM table;```在上面的示例中,根据column2的值来判断条件,并将相应的结果赋值给result_column列。

2. 搜索CASE WHEN语句搜索CASE WHEN语句用于根据多个条件的结果来执行相应的操作。

下面是一个搜索CASE WHEN语句的示例:```SELECT column1,CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultEND AS result_columnFROM table;```在上面的示例中,根据condition1、condition2等条件的结果来执行相应的操作,并将结果赋值给result_column列。

case when用法 oracle

case when用法 oracle

case when用法oracle摘要:1.简介2.Oracle 中的CASE 语句3.CASE 语句的基本语法4.CASE 语句的WHEN 子句5.CASE 语句的ELSE 子句6.CASE 语句的THEN 子句7.CASE 语句的END 子句8.CASE 语句的ORACLE 应用实例9.总结正文:1.简介在Oracle 数据库中,CASE 语句是一种强大的条件分支语句,可以根据不同的条件返回不同的结果。

CASE 语句可以提高代码的可读性和可维护性,使复杂的逻辑变得更加简单。

2.Oracle 中的CASE 语句在Oracle 数据库中,CASE 语句用于基于某个表达式的值执行一系列的动作。

它允许你将多个条件分支组合成一个表达式,从而简化SQL 查询和PL/SQL 代码。

3.CASE 语句的基本语法CASE 语句的基本语法如下:```CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE result_elseEND;```4.CASE 语句的WHEN 子句WHEN 子句用于定义条件分支。

当表达式的值满足某个条件时,将返回该分支的结果。

可以有多个WHEN 子句,每个子句之间用逗号分隔。

5.CASE 语句的ELSE 子句ELSE 子句是可选的。

当表达式的值不满足任何条件时,将返回ELSE 子句的结果。

如果省略ELSE 子句,那么当表达式的值为NULL 时,将返回NULL。

6.CASE 语句的THEN 子句THEN 子句用于定义条件分支的结果。

每个WHEN 子句后都跟着一个THEN 子句,它们之间用分号分隔。

7.CASE 语句的END 子句END 子句标志着CASE 语句的结束。

8.CASE 语句的ORACLE 应用实例假设有一个员工表,包含以下字段:员工ID(id)、姓名(name)、性别(gender)和工资(salary)。

oraclecasewhen用法

oraclecasewhen用法

oraclecasewhen⽤法原⽂:/eshizhan/archive/2012/04/06/2435493.html1. CASE WHEN 表达式有两种形式--简单Case函数CASE sexWHEN'1'THEN'男'WHEN'2'THEN'⼥'ELSE'其他'END--Case搜索函数CASEWHEN sex ='1'THEN'男'WHEN sex ='2'THEN'⼥'ELSE'其他'END2. CASE WHEN 在语句中不同位置的⽤法2.1 SELECT CASE WHEN ⽤法SELECT grade, COUNT (CASE WHEN sex =1THEN1/*sex 1为男⽣,2位⼥⽣*/ELSE NULLEND) 男⽣数,COUNT (CASE WHEN sex =2THEN1ELSE NULLEND) ⼥⽣数FROM students GROUP BY grade;2.2 WHERE CASE WHEN ⽤法SELECT T2.*, T1.*FROM T1, T2WHERE (CASE WHEN PARE_TYPE ='A'ANDT1.SOME_TYPE LIKE'NOTHING%'THEN1WHEN PARE_TYPE !='A'ANDT1.SOME_TYPE NOT LIKE'NOTHING%'THEN1ELSE0END) =12.3 GROUP BY CASE WHEN ⽤法SELECTCASE WHEN salary <=500THEN'1'WHEN salary >500AND salary <=600THEN'2'WHEN salary >600AND salary <=800THEN'3'WHEN salary >800AND salary <=1000THEN'4'ELSE NULL END salary_class, -- 别名命名COUNT(*)FROM Table_AGROUP BYCASE WHEN salary <=500THEN'1'WHEN salary >500AND salary <=600THEN'2'WHEN salary >600AND salary <=800THEN'3'WHEN salary >800AND salary <=1000THEN'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清晰,个⼈不推荐使⽤。

oracle中case when的用法

oracle中case when的用法

oracle中case when的用法在 Oracle 中,case when 是一种条件判断语句,用于根据条件返回不同的结果。

它通常与 else 语句连用,以返回除条件为真时之外的结果。

以下是 case when 的一些用法示例:1. 简单 case 表达式:```SELECT case when age > 20 THEN "青年"when age < 18 THEN "少年"else "成人" END AS age_groupFROM users;```此示例将返回年龄大于 20 岁、小于 18 岁或等于 18 岁的用户的 age_group 属性,即"青年"或"少年"。

2. 搜索 case 表达式:```SELECT case when age > 20 THEN "青年"when age < 18 THEN "少年"else "成人" END AS age_groupFROM users;```此示例使用搜索 case 表达式,将根据 age 属性的值确定返回的结果。

在这种情况下,如果 age 大于 20 岁,则返回"青年",如果age 小于 18 岁,则返回"少年",否则返回"成人"。

3. else 语句:```SELECT case when age > 20 THEN "青年"when age < 18 THEN "少年"else "成人" END AS age_groupFROM users;```此示例将返回 age_group 属性的值,取决于 age 属性的值。

oracle的case when语法

oracle的case when语法

在Oracle中,“CASE WHEN”用于判断字段多状态的情况,语法为“CASE 列名 WHEN 条件值 1 THEN 选项 1 WHEN 条件值 2 THEN 选项2...ELSE 默认值END”。

具体来说,CASE WHEN语句以CASE开头,以END结尾。

在分支中,WHEN后跟条件,THEN为显示结果。

ELSE为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加。

END后跟别名。

例如:
(CASE u.sex WHEN 0 THEN '男' WHEN 1 THEN '女' ELSE '未知' END)性别 FROM tb_secure_user u
这个例子中,根据u.sex的值判断性别,如果u.sex为0,则性别为男,如果u.sex为1,则性别为女,否则性别为未知。

另外,可以将SUM与CASE结合使用,实现分段统计,如将表中各种性别的人数进行统计:
SELECT SUM(CASEu.sexWHEN0THEN1ELSE0 END)男性, 20 17 0。

这个例子中,根据u.sex的值进行分段统计,如果u.sex为0,则男性人数加1,否则人数不变。

最终得到男性人数。

oracle case when嵌套用法

oracle case when嵌套用法
Oracle的case用法比较复杂,特别是当使用case when嵌套时,用法就更加复杂了。

case when嵌套可以将几个case when嵌套在一起,以实现其中任意一种情况时都能
实现某种功能。

一般情况下,case when嵌套语句用到了if-else-if结构,如:
selectcase
when x=1 then
case
when y=1 then z=z+1;
when y=2 then z=z-1;
else z=z;
end;
when x=2 then
case
when y=1 then z=z+2;
when y=2 then z=z-2;
else z=z;
end;
else
z=z
end;
上述代码可以实现当x的值是1的时候,根据y的值来给z增加或减少1;当x的值
是2的时候,根据y的值来给z增加或减少2。

当然,case when还可以结合函数使用,如:
总之,case when嵌套可以用来实现更复杂的条件判断和操纵数据表,值得掌握和学习。

oracle case when 在where后使用注意的地方

oracle case when 在where后使用注意的地方标题:Oracle CASE WHEN 在 WHERE 后使用注意的地方引言概述:Oracle数据库中的CASE WHEN语句是一种强大的条件表达式,可以在查询中根据不同的条件进行不同的操作。

然而,在使用CASE WHEN语句时,在WHERE子句中需要注意一些细节。

本文将详细介绍在使用Oracle CASE WHEN语句时需要注意的地方。

正文内容:1. CASE WHEN语句的语法和基本用法1.1 CASE WHEN语句的语法CASE WHEN语句的基本语法如下:```CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultEND```1.2 CASE WHEN语句的基本用法CASE WHEN语句可以用于SELECT语句的字段列表、WHERE子句和ORDER BY子句中。

它可以根据条件返回不同的结果,并且可以嵌套使用。

2. 在WHERE子句中使用CASE WHEN语句的注意事项2.1 CASE WHEN语句只能返回一个值在WHERE子句中使用CASE WHEN语句时,需要确保它只返回一个值。

否则,将会引发错误。

2.2 CASE WHEN语句的结果类型需要与比较的数据类型一致在进行条件比较时,CASE WHEN语句的结果类型需要与比较的数据类型一致。

如果不一致,需要进行类型转换。

2.3 CASE WHEN语句中的条件需要遵循逻辑规则在WHERE子句中使用CASE WHEN语句时,需要确保条件是逻辑正确的。

否则,可能会导致查询结果不准确。

2.4 CASE WHEN语句中的条件需要考虑索引的使用在WHERE子句中使用CASE WHEN语句时,需要注意条件是否能够使用索引。

如果条件过于复杂,可能会导致索引无法使用,从而影响查询性能。

2.5 CASE WHEN语句的嵌套使用需要小心在使用CASE WHEN语句时,可以进行嵌套使用。

oracle function 中 case when用法

oracle function 中 case when用法在Oracle中,CASE WHEN函数可以用于条件判断和返回不同的值。

基本语法格式如下:CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultEND实际使用时,可以根据需要添加任意多个WHEN条件和对应的结果。

如果没有满足条件的WHEN语句,可以使用ELSE 语句设置默认返回值。

以下是一个简单的例子,说明了CASE WHEN函数的用法:SELECT employee_id,first_name,last_name,CASEWHEN salary > 5000 THEN 'High Salary'WHEN salary > 3000 THEN 'Medium Salary'ELSE 'Low Salary'END as salary_categoryFROM employees;在上述例子中,根据salary字段的值,将员工的薪水分为“高薪”、“中薪”和“低薪”。

另外,CASE WHEN函数也可以进行复杂的条件判断,例如使用比较运算符、逻辑运算符、IN运算符等。

下面是一个复杂条件判断的例子:SELECT employee_id,first_name,last_name,CASEWHEN salary > 5000 AND job_id = 'IT_PROG' THEN'Senior IT'WHEN salary > 4000 AND (job_id = 'IT_PROG' OR job_id = 'SA_MAN') THEN 'Senior Employee'ELSE 'Other Employee'END as employee_typeFROM employees;在上述例子中,根据salary字段和job_id字段的值,将员工分为“高级IT员工”、“高级员工”和“其他员工”。

OracleCASEWHEN用法介绍

OracleCASEWHEN⽤法介绍1. CASE WHEN 表达式有两种形式--简单Case函数CASE sexWHEN '1' THEN '男'WHEN '2' THEN '⼥'ELSE '其他' END--Case搜索函CASEWHEN sex = '1' THEN '男'WHEN sex = '2' THEN '⼥'ELSE '其他' END2. CASE WHEN 在语句中不同位置的⽤法2.1 SELECT CASE WHEN ⽤法SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男⽣,2位⼥⽣*/ELSE NULLEND) 男⽣数,COUNT (CASE WHEN sex = 2 THEN 1ELSE NULLEND) ⼥⽣数FROM students GROUP BY grade;2.3 WHERE CASE WHEN ⽤法SELECT T2.*, T1.*FROM T1, T2WHERE (CASE WHEN PARE_TYPE = 'A' ANDT1.SOME_TYPE LIKE 'NOTHING%'THEN 1WHEN PARE_TYPE != 'A' ANDT1.SOME_TYPE NOT LIKE 'NOTHING%'THEN 1ELSE 0END) = 12.4 GROUP BY CASE WHEN ⽤法SELECTCASE 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_AGROUP BYCASE 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清晰,个⼈不推荐使⽤。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档