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的用法

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多条件判断

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函数的用法

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多个条件

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的用法

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_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中用于根据条件返回不同结果的强大工具。可以根据具体的需求和条件进行适当调整和扩展。

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