SQL之casewhenthen用法
SQL之casewhenthen⽤法
case具有两种格式。简单case函数和case搜索函数。
--简单case函数
case sex
when '1' then '男'
when '2' then '⼥’
else '其他' end
--case搜索函数
case when sex = '1' then '男'
when sex = '2' then '⼥'
else '其他' end
这两种⽅式,可以实现相同的功能。简单case函数的写法相对⽐较简洁,但是和case搜索函数相⽐,功能⽅⾯会有些限制,⽐如写判定式。
还有⼀个需要注重的问题,case函数只返回第⼀个符合条件的值,剩下的case部分将会被⾃动忽略。
--⽐如说,下⾯这段sql,你永远⽆法得到“第⼆类”这个结果
case when col_1 in ('a','b') then '第⼀类'
when col_1 in ('a') then '第⼆类'
else '其他' end
下⾯实例演⽰:
⾸先创建⼀张users表,其中包含id,name,sex三个字段,表内容如下:
SQL> drop table users purge;
drop table users purge
ORA-00942: 表或视图不存在
SQL> create table users(id int,name varchar2(20),sex number);
Table created
SQL> insert into users(id,name) values(1,'张⼀');
1 row inserted
SQL> insert into users(id,name,sex) values(2,'张⼆',1);
1 row inserted
SQL> insert into users(id,name) values(3,'张三');
1 row inserted
SQL> insert into users(id,name) values(4,'张四');
1 row inserted
SQL> insert into users(id,name,sex) values(5,'张五',2);
1 row inserted
SQL> insert into users(id,name,sex) values(6,'张六',1);
1 row inserted
SQL> insert into users(id,name,sex) values(7,'张七',2);
1 row inserted
SQL> insert into users(id,name,sex) values(8,'张⼋',1);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from users;
ID NAME SEX
--------------------------------------- -------------------- ----------
1 张⼀
2 张⼆ 1
3 张三
4 张四
5 张五 2
6 张六 1
7 张七 2
8 张⼋ 1
8 rows selected
1、上表结果中的"sex"是⽤代码表⽰的,希望将代码⽤中⽂表⽰。可在语句中使⽤case语句:
SQL> select u.id,u.name,u.sex,
2 (case u.sex
3 when 1 then '男' 4 when 2 then '⼥'
5 else '空的'
6 end
7 )性别
8 from users u;
ID NAME SEX 性别
--------------------------------------- -------------------- ---------- ------
1 张⼀ 空的
2 张⼆ 1 男
3 张三 空的
4 张四 空的
5 张五 2 ⼥
6 张六 1 男
7 张七 2 ⼥
8 张⼋ 1 男
8 rows selected
2、如果不希望列表中出现"sex"列,语句如下:
SQL> select u.id,u.name,
2 (case u.sex
3 when 1 then '男'
4 when 2 then '⼥'
5 else '空的'
6 end
7 )性别
8 from users u;
ID NAME 性别
--------------------------------------- -------------------- ------
1 张⼀ 空的
2 张⼆ 男
3 张三 空的
4 张四 空的
5 张五 ⼥
6 张六 男
7 张七 ⼥
8 张⼋ 男
8 rows selected
3、将sum与case结合使⽤,可以实现分段统计。
如果现在希望将上表中各种性别的⼈数进⾏统计,sql语句如下:
SQL> select
2 sum(case u.sex when 1 then 1 else 0 end)男性,
3 sum(case u.sex when 2 then 1 else 0 end)⼥性,
4 sum(case when u.sex <>1 and u.sex<>2 then 1 else 0 end)性别为空
5 from users u;
男性 ⼥性 性别为空
---------- ---------- ----------
3 2 0
--------------------------------------------------------------------------------
SQL> select
2 count(case when u.sex=1 then 1 end)男性,
3 count(case when u.sex=2 then 1 end)⼥,
4 count(case when u.sex <>1 and u.sex<>2 then 1 end)性别为空
5 from users u;
男性 ⼥ 性别为空
---------- ---------- ----------
3 2 0
case when的用法
case when的用法
case when是SQL语句中常用的一个判断结构,用于根据查询条件的不同来执行不同的操作,主要用于多个分支的逻辑处理,即根据不同的条件,返回不同的结果。也可以把它理解为if-else语句的SQL表达式,即先判断查询结果,如果查询结果符合条件,则返回值A;如果不符合条件,则返回值B。就像if-else语句一样,case when语句也有三个部分组成,即case、when、then。
首先,case是case when结构的关键,它表示“如果”,它会判断指定的条件。
其次,when表示“如果”的条件,它是跟在case后面的,指出要判定的条件。多个条件之间可以用关键字"and"或"or"来组合在一起,当满足其中任何条件时就会执行对应的then后面的操作。
最后,then表示“那么”,它是case when结构中最后一个关键字,它会根据前面case和when设定的条件进行判断,符合条件就会执行then后面指定的操作;不符合条件时就会执行else后面指定的操作。
因此case when语句如下形式:
case
when 条件1 then 执行1
...
else 默认执行操作
end
不用case when这种结构的时候,可以考虑if-else语句,但if-else存在的缺点是只能判断两种情况,而case when结构在同一语句中可以写出多个判断条件,多分支的逻辑处理更加灵活。
比如要查询某表,根据不同的分数查询对应的等级,可以使用case when结构:
select name,score,
when score>80 then 'B'
else 'E'
end as rank
from student; 这样就可以根据比较多的条件来判断结果,而且很方便。
casewhenthen多条件判断
CASE
WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2
WHEN 条件3 THEN 结果3
WHEN 条件4 THEN 结果4 .........
WHEN 条件N THEN 结果N
ELSE 结果X END Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数 CASE sex
WHEN '1' THEN '男' WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
例如: SELECT id, name, cj, (CASE WHEN cj < 60 THEN '不及格' WHEN cj BETWEEN 60 AND 90 THEN '良好'
WHEN cj > 90 THEN '优秀' END) AS 状态 FROM stud 这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数
相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动
忽略。
--比如说,下面这段SQL,你永远无法得到“第二类”这个结果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类'
WHEN col_1 IN ('a') THEN '第二类'
ELSE'其他' END 下面我们来看一下,使用Case函数都能做些什么事情。 一,已知数据按照另外一种方式进行分组,分析。
有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key)
国家(country) 人口(population)
中国 600
美国 100 加拿大 100
case when函数的用法
case when函数的用法
case when函数是一种在SQL语句中常用的条件表达式函数,因为其使用灵活且便于理解,在实际开发中得到了广泛的应用。在本文中,我将介绍case when函数的用法,并提供一些相关参考内容,帮助读者更好地理解和应用该函数。
case when函数主要用于根据不同的条件返回不同的值。它的一般语法如下所示:
```
case when condition1 then result1
when condition2 then result2
...
else result
end
```
其中,condition1、condition2等是表示条件的逻辑表达式,result1、result2等是表示对应条件成立时返回的结果。最后的else result是当所有条件都不成立时返回的默认值。
下面是一些常见的case when函数的用法:
1. 根据不同的条件返回不同的值
```
select name, age,
case when age < 18 then '未成年'
when age >= 18 and age < 60 then '成年人'
else '老年人'
end as age_group from person;
```
这个案例中,根据人的年龄不同,将其分为未成年、成年人和老年人三个不同的年龄组。
2. 将多个条件组合进行判断
```
select name, sex,
case when sex = '男' and age < 20 then '男孩'
when sex = '男' and age >= 20 then '男人'
when sex = '女' and age < 20 then '女孩'
else '女人'
end as gender
from person;
sqlcasewhen多个条件
sqlcasewhen多个条件
在SQL中,CASE WHEN语句可以用于对多个条件进行判断和处理。它的基本语法如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
```
其中,condition1、condition2等表示不同的条件,result1、result2等表示满足不同条件时的结果,ELSE关键字定义了默认情况下的结果。
下面是一个例子,假设我们有一个学生表格,包含学生姓名、成绩和班级信息,现在需要根据不同的成绩范围,给出相应的评级(优、良、中、差):
```
SELECT
name,
score,
CASE
WHEN score >= 90 THEN '优'
WHEN score >= 80 THEN '良'
WHEN score >= 60 THEN '中' ELSE '差'
END AS grade
FROM students;
```
在上面的例子中,通过使用CASE WHEN语句,根据不同的条件(成绩范围)给出了相应的评级。根据学生的成绩,我们可以得到学生的姓名、成绩和对应的评级。
注意,CASE WHEN语句是按顺序进行判断的,一旦满足某个条件,就会返回相应的结果并且结束判断,因此应根据具体需求,将条件放在合适的位置上。
MySql中casewhenthenelseend的用法
MySql中casewhenthenelseend的⽤法
解释:
SELECT
case -------------如果
when sex='1' then '男' -------------sex='1',则返回值'男'
when sex='2' then '⼥' -------------sex='2',则返回值'⼥'
else 0 -------------其他的返回'其他’
end -------------结束
from sys_user --------整体理解: 在sys_user表中如果sex='1',则返回值'男'如果sex='2',则返回值'⼥' 否则返回'其他’
---⽤法⼀:
SELECT
CASE WHEN STATE = '1' THEN '成功'
WHEN STATE = '2' THEN '失败'
ELSE '其他' END
FROM SYS_SCHEDULER
---⽤法⼆:
SELECT STATE
CASE WHEN '1' THEN '成功'
WHEN '2' THEN '失败'
ELSE '其他' END
FROM SYS_SCHEDULER
列⼦:
有员⼯表empinfo (
Fempno varchar2(10) not null pk,
Fempname varchar2(20) not null,
Fage number not null,
Fsalary number not null
);
假如数据量很⼤约1000万条;写⼀个你认为最⾼效的SQL,⽤⼀个SQL计算以下四种⼈: fsalary>9999 and fage > 35
fsalary>9999 and fage < 35
fsalary <9999 and fage > 35
fsalary <9999 and fage < 35
每种员⼯的数量; select sum(case when fsalary > 9999 and fage > 35
Sql_Case_When用法
SQL中Case的使用方法
Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
--比如说,下面这段SQL,你永远无法得到“第二类”这个结果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类'
WHEN col_1 IN ('a') THEN '第二类'
ELSE'其他' END
下面我们来看一下,使用Case函数都能做些什么事情。
一,已知数据按照另外一种方式进行分组,分析。
有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key)
国家(country)人口(population)
中国600
美国100
加拿大100
英国200
法国300
日本250
德国200
墨西哥50
印度250
根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。
洲人口
亚洲1100
北美洲250
其他700
想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。
如果使用Case函数,SQL代码如下:
pgsql case when用法
pgsql case when用法
PostgreSQL使用case when语句可以实现对某一列的值进行条件判断,根据不同的条件,执行不同的操作或者返回不同的结果。
case when语句的基本格式如下:
CASE WHEN condition1 THEN result1 。
WHEN condition2 THEN result2 。
ELSE result3 。
END。
比如,要查询表格中的某一列数据是“1”,则返回"是",如果数据不是"1",则返回"否",则可以使用如下SQL语句:
SELECTCASEWHEN某列=1THEN'是'ELSE'否'END。
FROM表格名。
在实际使用中,case when还可以使用其它函数进行计算,以及采用其它case when语句来实现多层条件判断,例如:
SELECTCASEWHEN表格1.性别='男'。
THEN(CASEWHEN某列>50THEN'是'ELSE'否'END)。
ELSE(CASEWHEN某列>60THEN'是'ELSE'否'END)。
END。
FROM表格1; 以上就是PostgreSQL中case when用法的一种示例,这种用法十分灵活方便,在实际的工作中可以根据自己的需要进行调整。
oracle中casewhen用法
oracle中casewhen用法
在Oracle中,CASE WHEN语句用于在SELECT语句中根据条件执行不同的逻辑。它类似于其他编程语言中的switch语句,但具有更强大的功能和灵活性。以下是关于Oracle中CASE WHEN用法的详细说明,总计1200字以上。
CASEWHEN语句的基本语法如下:
```sql
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
```
这个语法块中可以包含多个WHEN条件,每一个WHEN条件后面都对应一个特定的结果。如果没有一个条件被满足,那么ELSE子句中指定的结果会被返回。
以下是一个简单的例子,用于说明如何在Oracle中使用CASE WHEN语句:
```sql SELECT
employee_id,
first_name,
last_name,
CASE
WHEN salary > 5000 THEN 'High Earner'
WHEN salary > 3000 THEN 'Medium Earner'
ELSE 'Low Earner'
FROM
employees;
```
除了基本用法,CASEWHEN语句还有一些其他的高级功能。
1.CASEWHEN子句可以嵌套,以实现更复杂的逻辑。使用嵌套CASEWHEN语句时,可以在THEN或ELSE子句中包含其他CASEWHEN语句。
以下是一个嵌套CASEWHEN语句的示例:
```sql
SELECT
order_id,
CASE WHEN status = 'New' THEN
CASE
WHEN payment_method = 'Credit Card' THEN 'Processing'
WHEN payment_method = 'Cash' THEN 'Pending'
Sql_Case_When用法 2
SQL中Case的使用方法
Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
--比如说,下面这段SQL,你永远无法得到“第二类”这个结果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类'
WHEN col_1 IN ('a') THEN '第二类'
ELSE'其他' END
下面我们来看一下,使用Case函数都能做些什么事情。
一,已知数据按照另外一种方式进行分组,分析。
有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key)
国家(country)人口(population)
中国600
美国100
加拿大100
英国200
法国300
日本250
德国200
墨西哥50
印度250
根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。
洲人口
亚洲1100
北美洲250 其他700
想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。
如果使用Case函数,SQL代码如下:
SELECT SUM(population),
case when用法sqlser
case when用法sqlser
CASE WHEN是SQL Server中的条件表达式,它允许根据指定的条件返回不同的结果。
以下是CASE WHEN的基本语法:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
```
使用该语法,可以根据满足不同条件时返回的结果对数据进行分类或条件操作。
例如,下面是一个使用CASE WHEN进行条件分类的示例:
```
SELECT
column1,
CASE
WHEN column2 = 'value1' THEN 'Category 1'
WHEN column2 = 'value2' THEN 'Category 2'
ELSE 'Other Category'
END AS category
FROM table1
```
在上述示例中,根据column2列的值将结果划分为不同的类别。
CASE WHEN还可以与其他SQL函数一起使用,以根据条件计算结果。
总之,CASE WHEN是SQL Server中用于根据条件返回不同结果的强大工具。可以根据具体的需求和条件进行适当调整和扩展。
