SQL中Case的语法
sql中case when用法
sql中case when用法在SQL 中,`CASE WHEN` 语句用于在查询中进行条件判断,类似于程序中的`if-else` 结构。
`CASE WHEN` 允许根据条件来选择不同的输出或执行不同的操作。
基本语法如下:```sqlSELECTcolumn1,column2,CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...WHEN conditionN THEN resultNELSE default_resultEND AS alias_nameFROMyour_table;```- `condition1`, `condition2`, ..., `conditionN` 是待检查的条件。
- `result1`, `result2`, ..., `resultN` 是与条件匹配时要返回的结果。
- `default_result` 是在没有任何条件匹配时要返回的默认结果。
- `alias_name` 是结果列的别名,可以省略。
下面是一个简单的例子,假设我们有一个学生成绩表,我们想要根据分数判断学生成绩等级:```sqlSELECTstudent_name,score,CASEWHEN score >= 90 THEN 'A'WHEN score >= 80 THEN 'B'WHEN score >= 70 THEN 'C'WHEN score >= 60 THEN 'D'ELSE 'F'END AS gradeFROMstudent_scores;```在这个例子中,根据不同的分数范围,我们使用`CASE WHEN` 语句给学生成绩分级,并将结果显示在查询结果中。
`CASE WHEN` 语句在查询中非常灵活,你可以根据具体的业务需求进行不同的条件判断和结果返回。
sqlcase语句用法
sqlcase语句用法SQLCase语句是SQL中用于实现条件选择的一种特殊语句。
它可以根据不同条件,在SQL语句执行范围内自动选择一组查询或操作。
具体用法如下:1. case when... then... else... end:case when子句的基本结构是case when condition then result else alternative end,其中condition为布尔表达式,result和alternative则是查询结果或操作。
2. case expr when... then...:case expr when子句是case when子句的变形,它的基本格式为case expr when condition1 then result1 [when condition2 then result2]…[else alternative] end,其中expr表示要处理的表达式,conditionn为布尔表达式,resultn表示处理结果。
3. case... when... then... else… end:case… whe n子句的基本格式是case expression when condition1 then result1 [when condition2 then result2]…[else alternative] end,其中expression表示要处理的变量,conditionn为布尔表达式,resultn 表示处理结果。
4. case expr when… then… else… end:case expr when子句的基本格式是case expr when condition1 then result1 [when condition2 then result2]…[else alternative] end,其中expr表示要处理的表达式,conditionn为布尔表达式,resultn表示处理结果。
sql case语句
sql case语句
SQLCASE语句用于执行条件分支语句,它可以在SELECT、UPDATE和DELETE语句中使用。
语法:
```。
CASE expression。
WHEN value1 THEN result1。
WHEN value2 THEN result2。
...
ELSE resultN。
END。
```。
其中,expression表示待判断的表达式,value1、value2等为值,result1、result2等为对应值的执行结果,ELSE为可选项,表示如果expression的值与所有WHEN后的值都不匹配,则返回ELSE指定的值。
示例:
假设有一张学生成绩表,其中有三个字段:id、name、score,现需要查询每个学生的成绩评级(优、良、中、及格、不及格)。
```。
SELECT id, name, score,。
CASE。
WHEN score >= 90 THEN '优'。
WHEN score >= 80 THEN '良'。
WHEN score >= 70 THEN '中'。
WHEN score >= 60 THEN '及格'。
ELSE'不及格'。
END AS grade。
FROM score_table;。
```。
以上语句中,CASE语句根据学生得分来判断其所属的成绩评级,并将结果以“grade”别名返回。
case when在sql中用法
case when在sql中用法
在SQL中,“Case When”语句用于选择判断,在执行时先对条件进行判断,然后根据判断结果做出相应的操作。
其基本语法如下:
```sql
CASE 字段
WHEN 条件1 THEN 操作1
WHEN 条件2 THEN 操作2
...
ELSE 操作n
END;
```
这个语法中,我们首先使用CASE关键字开头,然后根据不同的条件使用WHEN关键字,并在每个条件后面指定结果。
如果所有条件都不满足,就返回ELSE子句中指定的结果。
最后使用END关键字闭合该CASE语句。
需要注意的是,条件和结果都可以是任何SQL表达式。
例如,以下是一个使用CASE WHEN来计算学生成绩的例子:
```sql
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
ELSE 'C'
END AS grade
FROM students;
```
这个查询语句可以将学生的成绩分为A、B和C三个等级。
当分数大于等于90时,等级为A;当分数在80到90之间时,等级为B;否则等级为C。
SQL中的CASE的用法
SQL中的CASE的⽤法CASE在SQL语句中,很有点类似java等⾼级编程语⾔中的switch这样⼦的多分枝语句,但是有点不同的是,case后⾯接的是when,另外,when的后续分枝有点类似if后⾯接else。
这个是我的个⼈认识,case 。
when。
then。
[else]。
下⾯,看看MySQL的帮助信息,可以看到case的基本语法结构:1 topics: #CASE的两种基本⽤法2 CASE OPERATOR3 CASE STATEMENT45 MariaDB [mysql]> help case statement; #case的第⼀种⽤法6 Name: 'CASE STATEMENT'7 Description:8 Syntax:9 CASE case_value10 WHEN when_value THEN statement_list11 [WHEN when_value THEN statement_list] ...12 [ELSE statement_list]13 END CASE1415 Or:1617 CASE18 WHEN search_condition THEN statement_list19 [WHEN search_condition THEN statement_list] ...20 [ELSE statement_list]21 END CASE2223 MariaDB [mysql]> help case operator; #case的第⼆种基本⽤法24 Name: 'CASE OPERATOR'25 Description:26 Syntax:27 CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN28 result ...] [ELSE result] END2930 CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...]31 [ELSE result] END这⾥,我还需要说明的是,case可以和select,check,update等⼀起配合使⽤,相当于增加了SQL操作的条件分析,是的SQL写的可以更加强⼤。
sql中 case when if的用法-概述说明以及解释
sql中case when if的用法-概述说明以及解释1.引言1.1 概述SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。
在SQL中,有许多不同的语句和函数可用于查询、插入、更新和删除数据库中的数据。
其中,CASE、WHEN和IF是三个常用的条件判断语句,用于根据不同的条件执行不同的逻辑操作。
CASE语句是一种灵活的条件语句,它允许根据不同的条件执行不同的代码块。
它的基本语法如下:sqlCASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultNEND其中,condition是一个布尔表达式,可以是任何SQL表达式,result 是当满足条件时要返回的结果。
CASE语句从上到下逐一判断每个条件,一旦找到第一个满足条件的,就会返回对应的结果,并结束整个CASE语句。
WHEN语句是CASE语句中的一个关键字,用于指定一个条件判断。
它可以包含多个WHEN语句,以执行更复杂的条件判断逻辑。
每个WHEN 语句后面必须跟着一个THEN关键字,表示满足该条件时要执行的操作。
IF语句是SQL中的条件语句之一,它用于根据一个条件的真假来执行不同的代码块。
它的基本语法如下:sqlIF condition THENstatements1ELSEstatements2END IF其中,condition是一个布尔表达式,statements1是当条件为真时要执行的代码,statements2是当条件为假时要执行的代码。
本文将重点介绍SQL中CASE、WHEN和IF语句的用法,包括语法和实例,帮助读者更好地理解和应用这些条件判断语句。
在接下来的章节中,将逐一介绍每个语句的具体用法和注意事项。
1.2 文章结构本文将分为引言、正文和结论三部分来探讨SQL中CASE WHEN和IF的用法。
sql中case语句用法举例说明
sql中case语句用法举例说明摘要:1.SQL 中的CASE 语句简介2.CASE 语句的基本语法3.CASE 语句的简单举例4.CASE 语句在复杂查询中的应用5.CASE 语句与其它条件判断语句的比较6.总结正文:SQL 中的CASE 语句是一种强大的条件判断工具,它可以让我们在查询数据时根据不同的条件返回不同的结果。
CASE 语句的基本语法如下:```CASE 表达式WHEN 条件1 THEN 结果1WHEN 条件2 THEN 结果2...ELSE 默认结果END```下面通过一些简单的例子来说明CASE 语句的用法:假设有一个名为“employees”的表,包含以下字段:id, name, salary,department。
现在我们想要查询每个部门的平均工资,可以使用如下查询:```sqlSELECT department, AVG(salary) as average_salaryFROM employeesGROUP BY department;```然而,如果我们需要返回每个部门的名称以及平均工资,可以使用CASE 语句来实现:```sqlSELECT department,CASE departmentWHEN "IT" THEN "Information Technology"WHEN "HR" THEN "Human Resources"WHEN "Finance" THEN "Finance"WHEN "Sales" THEN "Sales"END as department_name,AVG(salary) as average_salaryFROM employeesGROUP BY department;```在上述例子中,我们使用了CASE 语句来根据department 字段的值返回对应的部门名称。
case在sql中的用法
case在sql中的用法介绍
在SQL中,CASE是一种条件语句,用于在查询中执行条件逻辑。
它允许你根据一个或多个条件对数据进行分类,并返回不同的结果。
CASE语句可以用于SELECT查询、UPDATE语句、DELETE语句等。
CASE语句有两种形式:简单CASE语句和搜索CASE语句。
1.简单CASE语句:
简单CASE语句根据一个表达式的结果进行条件判断,并返回相应的结果。
它的语法如下:
这里的expression是你要评估的表达式,value1、value2等是可能的表达式结果,result1、result2等是与每个表达式结果对应的返回结果。
如果表达式的值与任何给定的值都不匹配,那么ELSE子句中的默认结果将被返回。
2. 搜索CASE语句:
搜索CASE语句可以根据多个条件进行判断,并返回第一个满足条件的结果。
它的语法如下:
这里的condition1、condition2等是条件表达式,result1、result2等是与每个条件对应的返回结果。
第一个满足条件的表达式将被返回。
如果没有满足条件的表达式,那么ELSE子句中的默认结果将被返回。
sql中case的用法实例
sql中case的用法实例在 SQL 中,`CASE` 语句用于在查询中进行条件判断并返回相应的值。
以下是 `CASE` 语句的一些用法实例:1. 简单的条件判断:```sqlSELECT column1,CASEWHEN column1 > 10 THEN '大于10'ELSE '小于等于10'END AS resultFROM table_name;```上述示例中,根据`column1` 的值,返回相应的结果。
如果`column1` 大于 10,返回 '大于10',否则返回 '小于等于10'。
2. 多条件判断:```sqlSELECT column1,CASEWHEN column1 > 10 THEN '大于10'WHEN column1 = 10 THEN '等于10'ELSE '小于10'END AS resultFROM table_name;```上述示例中,根据 `column1` 的值进行多条件判断。
如果 `column1` 大于 10,返回 '大于10';如果等于 10,返回 '等于10';否则返回 '小于10'。
3. 返回列值:```sqlSELECT column1, column2,CASE column3WHEN 'A' THEN column1 + column2WHEN 'B' THEN column1 - column2ELSE column1 * column2END AS resultFROM table_name;```上述示例中,根据 `column3` 的值,对 `column1` 和 `column2` 进行不同的计算,并返回结果。
如果 `column3` 为 'A',则返回`column1 + column2` 的结果;如果为 'B',则返回 `column1 - column2` 的结果;否则返回 `column1 * column2` 的结果。
SQL语句中CASE的用法
SQL语句中CASE的用法
在写SQL语句时,或者是在PL/SQL中,经常需要在一个SQL语句中,根据不同的条件,有多种处理方法,如简单例子:出售一种商品时,单价不同,折扣不同,对这种需求的处理,如果分情况处理,将会很麻烦,如果用Case语句,就可以在一条SQL语句中得到想要的结果。
首先看一下,Case的语法:
case when 条件A Then 结果A When 条件B 结果B ........ else 结果N end
和Decode 不同的是,Decode 只能针对固定的值,而 Case 可以用不是固定值,需是一个条件。
现在有以下的需求,有一个字符串,最后的两位可能是’/R’ ,’/T’另外,有的后两位没有前面的’/R’ ,’/T’,现在针对不同的需要,要将’/R’ ,’/T’取掉,没有’/R’ ,’/T’,就不做处理。
具体字符串如下: A01JCL-A01JCL/GF117F0001TR/R
SQL写法可以如下:
select (case
when instr(code, ’/R’) > 0 then
substr(code, 1, instr(code, ’/R’) - 1)
when instr(code, ’/T’) > 0 then
substr(code, 1, instr(code, ’/T’) - 1)
else
’0’
end)
from table_A t ;
使用Case时,要用括号括起来。
【。
sql的case用法加语句
sql的case用法加语句嘿,朋友!你知道 SQL 中的 case 用法吗?这玩意儿可太有用啦!比如说,你想根据某个条件来给数据分类或者做不同的处理,这时候case 就派上大用场啦!就好比你在整理一堆玩具,你可以根据玩具的类型,像小汽车呀、布娃娃呀,用 case 来把它们分到不同的箱子里。
“SELECT column1,CASE WHEN condition1 THEN result1WHEN condition2 THEN result2ELSE default_resultEND AS new_columnFROM table_name;”看这个语句,就像你在决定今天穿什么衣服。
如果天气热,你就穿短袖;如果有点凉,你就穿长袖;要是特别冷,那就得穿厚外套啦,其他情况可能就随便穿个啥。
咱再举个例子,在一个学生成绩表中,你可以用 case 来根据成绩给个等级呀。
“SELECT student_name,CASE WHEN score >= 90 THEN 'A'WHEN score >= 80 THEN 'B'WHEN score >= 70 THEN 'C'WHEN score >= 60 THEN 'D'ELSE 'F'END AS gradeFROM student_scores;”这就好像给学生们贴上不同的标签,优秀的是 A,良好的是 B 呀。
哎呀,SQL 的 case 用法真的是太灵活啦,能帮你解决好多实际问题呢!不管是在数据分类、状态判断还是各种复杂的业务逻辑处理中,它都能大显身手。
你还不赶紧去试试,用它来让你的数据库操作变得更简单、更高效呀!我的观点就是:SQL 的 case 用法是非常强大且实用的,一定要好好掌握它,能让你的数据库处理工作如虎添翼!。
在sql中case子句的两种形式
在sql中case⼦句的两种形式case⼦句,在select后⾯可以进⾏逻辑判断。
两种形式:判断相等、判断不等⼀、判断相等的语法:case 列名when ... then ...when ... then ...else ...end as 列别名ONE:新建⼀个表,插⼊初始数据。
--查整个表select * from SDetail--插⼊初始数据insert into SDetail (SName,SScore,SGender) values('刘德华',99,0)insert into SDetail (SName,SScore,SGender) values('古天乐',55,0)insert into SDetail (SName,SScore,SGender) values('张惠妹',55,1)insert into SDetail e(SName,SScore,SGender) values('梁家栋',43,0)insert into SDetail (SName,SScore,SGender) values('王⼒宏',99,0)insert into SDetail (SName,SScore,SGender) values('刘亦菲',88,1)View Codecase ⼦句判断相等--case语法的两种形式select * ,case SGender when 0 then '男' when 1 then '⼥' end as'性别'from SDetailView Code执⾏结果:⼆、判断不等(范围)case when 包含列名的逻辑表达式 then ...when ... then ...else ...end as 列别名--case判断不等(范围)select * ,case when SScore>60 then '及格'else'不及格' end as'是否及格'from SDetailView Code执⾏结果:。
sql的case语句
sql的case语句在SQL的世界中CASE语句相当于if -----else 语句。
Case具有两种格式。
简单Case函数和Case搜索函数。
--简单Case函数CASE sexWHEN '1' THEN '男'WHEN '2' THEN '⼥'ELSE '其他' END--Case搜索函数CASE WHEN sex = '1' THEN '男'WHEN sex = '2' THEN '⼥'ELSE '其他' END这两种⽅式,可以实现相同的功能。
1、举例:查询发⽣时间是9⽉份的各时间段的数量SELECTCOUNT(resum.id) AS number,( CASE WHEN DATE_FORMAT(resum.happenedTime,'%H') >'8' AND DATE_FORMAT(resum.happenedTime,'%H') <= '16' THEN '8-16组'WHEN DATE_FORMAT(resum.happenedTime,'%H') > '16' AND DATE_FORMAT(resum.happenedTime,'%H') <= '24' THEN '16-0组' WHEN DATE_FORMAT(resum.happenedTime,'%H') > '0' AND DATE_FORMAT(resum.happenedTime,'%H') <= '8' THEN '0-8组' END) AS projectBreakdownFROM `naers_eventsresume` resumINNER JOIN sys_hospital hos ON resum.hospitalId=hos.hospital_id AND hos.status=0WHERE resum.STATUS=3 AND eventType=1AND (resum.happenedTime BETWEEN '2018-09-01' AND CONCAT('2018-09-30',' 23:59:59'))GROUP BY projectBreakdown;结果如下:2、查询9⽉份的事件等级I,II,III,IV的数量SELECT eventlevel,COUNT(id) FROM `naers_events_ddzc`WHERE `status`='3'AND `happenedTime`>='2018-09-01 00:00:00'AND `happenedTime`<='2018-09-30 23:59:59'AND `type`='1'GROUP BY eventlevel;。
case when在sql中的用法
case when在sql中的用法
在SQL中,CASE WHEN语句用于在满足特定条件时根据不同的情况返回不同的值。
语法如下所示:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
```
在这个语法中,`CASE`关键字用于声明开始一个CASE WHEN语句块,`WHEN`关键字后面跟随一个条件,当该条件满足时,就返回对应的结果值。
可以有多个`WHEN`条件,每个条件后面跟随一个结果值。
最后,使用`ELSE`关键字定义一个默认的结果值,当所有条件都不满足时返回该值。
以下是一个示例:
```
SELECT name,
CASE
WHEN age >= 18 THEN '成年'
ELSE '未成年'
END AS status
FROM students;
```
在上面的示例中,根据学生的年龄(age)字段,如果年龄大于等于18,则返回'成年',否则返回'未成年'。
并且,使用`AS`关键字指定结果值的别名为status。
这是CASE WHEN语句的基本用法,但是还可以进行更复杂的操作,例如在条件中使用逻辑运算符、嵌套使用CASE WHEN语句等。
SQL之CASE语句
SQL之CASE语句1.语法#情况⼀:类似于switch,⼀般⽤于实现的等值判断case变量或表达式或字段when要判断的值then返回的值1或语句1(语句要加;)when要判断的值then返回的值2或语句2(语句要加;)...else要返回的值nend【case;】(如果是放在begin end中需要加上case,如果放在select后⾯不需要)#情况⼆:类似于多重if,⼀般⽤于实现区间判断casewhen要判断的条件1 then返回的值1或语句1(语句要加;)when要判断的条件2 then返回的值2或语句2(语句要加;)...else要返回的值nend【case;】(如果是放在begin end中需要加上case,如果放在select后⾯不需要)2.特点可以作为表达式,嵌套在其他语句中使⽤,可以放在任何地⽅,BEGIN END中或BEGIN END外⾯也可也作为独⽴语句去使⽤,只能放在BEGIN END中如果WHEN中的值满⾜或条件成⽴,则执⾏对应的THEN后⾯的语句,并且结束CASE,如果都不满⾜,则执⾏ELSE中的语句或值ELSE可以省略,如果ELSE省略了,并且所有WHEN条件都不满⾜,则返回NULL3.案例#1.创建存储过程,根据传⼊的成绩,来显⽰等级,⽐如传⼊的成绩:90-100,显⽰A。
80-90,显⽰B。
60-80,显⽰C,否则显⽰DDELIMITER $CREATE PROCEDURE test_case (IN score INT)BEGINCASEWHEN score>=90AND score<=100THEN SELECT'A';WHEN score>=80THEN SELECT'B';WHEN score>=60THEN SELECT'C';ELSE SELECT'D';END CASE;END$CALL test_case(95)$。
sqlcase用法总结
sqlcase⽤法总结sql ⾥的case的作⽤:⽤于计算条件列表的表达式,并返回可能的结果之⼀。
sql 的case 类型于编程语⾔⾥的 if-esle if-else 或者 switch,但它不⽤于控制sql程序的执⾏流程,⽽是作为列的逻辑使⽤。
语法: case [input_expression]when when_expression then result_expression [...n] [else else_result_expression] end 注:其中[]内都是可选的。
准备测试数据:1 2 3 4 5 6 7 8 9 10 11 12declare@stuinfo table (id int,sname nvarchar(20),gender varchar(1),sgroup int)insert into@stuinfoselect1,'张三','m',1 union all select2,'李四','f',1 union all select3,'王五','f',2 union all select4,'赵六','m',3 union all select5,'黄七','m',31. case后加表达式 根据表达式结果返回。
1 2 3 4 5 6 7select*,case sgroupwhen1 then N'组1'when2 then N'组2'when3 then N'组3'else N'未知'end groupname from@stuinfo2. case 后不加表达式 不加表达式,则根据when的条件返回。
1 2 3 4 5 6 7 8 9 10select*,casewhen sgroup = 1 and gender = 'm'then N'第⼀组男⽣' when sgroup = 1 and gender = 'f'then N'第⼀组⼥⽣' when sgroup = 2 and gender = 'm'then N'第⼆组男⽣' when sgroup = 2 and gender = 'f'then N'第⼆组⼥⽣' when sgroup = 3 and gender = 'm'then N'第三组男⽣' when sgroup = 3 and gender = 'f'then N'第三组⼥⽣' else N'未知'end commentfrom@stuinfo3. ⽤于 order by 如果存储过程需要⽀持多种排序,可以传递⼀个参数变量,然后根据该变量判断即可。
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语句是按顺序进行判断的,一旦满足某个条件,就会返回相应的结果并且结束判断,因此应根据具体需求,将条件放在合适的位置上。
sql中case语句三条数据右边中文左边数字用法举例说明
sql中case语句三条数据右边中文左边数字用法举例说明在SQL语句中,Case语句是一种常用的条件语句,可以根据不同的条件执行不同的操作。
其中,有一种特殊用法,即右边为中文,左边为数字的情况。
下面我们就来举例说明一下这种用法。
1. 给定分数范围,进行等级划分例如,我们有一张表格存储了学生的成绩,现在需要将成绩按照一定的分数区间进行等级划分。
具体要求如下:90分及以上为优秀,80-89分为良好,70-79分为中等,60-69分为及格,60分以下为不及格。
我们可以使用以下Case语句来实现:CASEWHEN score >= 90 THEN '优秀'WHEN score >= 80 AND score <= 89 THEN '良好'WHEN score >= 70 AND score <= 79 THEN '中等'WHEN score >= 60 AND score <= 69 THEN '及格'ELSE '不及格'END AS grade在这个例子中,我们可以看到,在Case语句中,我们使用了中文作为等级的表述,而将分数的区间用数字表示。
2. 根据性别显示不同的称呼另一个例子是,在一个存储了用户信息的表格中,我们需要根据用户的性别来显示不同的称呼。
比如,对于男性用户,我们需要显示“先生”,而对于女性用户,我们需要显示“女士”。
我们可以使用以下Case语句实现:CASEWHEN gender = '男' THEN '先生'WHEN gender = '女' THEN '女士'END AS title在这个例子中,我们同样使用了中文作为称呼的表述,而将性别使用了文字表示。
3. 根据状态显示不同的操作最后一个例子是,在一个订单管理系统中,我们需要根据订单的状态来显示不同的操作按钮。
SQL中的CASEWHEN使用
SQL中的CASEWHEN使用在SQL中,CASEWHEN语句用于在查询过程中根据条件进行逻辑判断,并返回相应的值。
它可以在SELECT、WHERE、ORDERBY或GROUPBY子句中使用。
CASEWHEN语句的基本语法如下:```CASEWHEN condition1 THEN value1WHEN condition2 THEN value2...ELSE valueEND```在上述语法中,CASE关键字后面的condition是待评估的条件表达式,当满足一些条件时,返回相应的value。
如果没有满足任何条件,将返回ELSE关键字后面的value。
如果不需要ELSE部分,可以省略。
CASEWHEN语句可以嵌套使用,形成复杂的逻辑判断。
它可以用于多种场景,包括数据转换、筛选数据、生成新的计算列等。
1.数据转换:根据条件将一些字段的值转换为另一个值。
例如,将性别字段的0和1分别转换为“男”和“女”:```SELECT CASE genderWHEN0THEN'男'WHEN1THEN'女'ELSE'未知'END AS gender_textFROM users```2.筛选数据:根据条件筛选出满足特定条件的记录。
例如,查找出库存大于等于10的产品:```SELECT product_name, stockFROM productsWHERECASEWHEN stock >= 10 THEN 1ELSE0END=1```3.生成新的计算列:根据不同的条件生成新的计算列。
例如,计算员工的年薪(基本工资加上奖金):```SELECT employee_name, salary, bonus,salary + CASEWHEN bonus IS NULL THEN 0ELSE bonusEND AS yearly_salaryFROM employees```CASEWHEN语句还支持其他操作符,如比较操作符(=、<、>等)、逻辑操作符(AND、OR等)和通配符(LIKE、IN等),可以根据具体需要灵活运用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL中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
注意:
1)Case函数只返回第一个符合条件的值,剩下的Case部分将会自动忽略
例如:CASE WHEN col_1 IN (‘a’,’b’) THEN ‘第一类’
WHEN col_1 IN(‘a’) THEN ‘第二类’
ELSE ‘其他’END
2)case when:
case(switch)里的那个when必须是数值型的
Case函数用途:
已知数据按照另外一种方式分组:
根据这个国家人口数据,统计亚洲和北美洲的人口数量。
1)国家表结构(Table_A):
2)表中数据:
3)Sql代码(case1.sql):
SELECT SUM(population),
CASE country
WHEN1THEN'亚洲'
WHEN9THEN'亚洲'
WHEN6THEN'亚洲'
WHEN2THEN'北美洲'
WHEN3THEN'北美洲'
WHEN8THEN'北美洲'
ELSE'其他'END
FROM Table_A
GROUP BY CASE country
WHEN1THEN'亚洲'
WHEN9THEN'亚洲'
WHEN6THEN'亚洲'
WHEN2THEN'北美洲'
WHEN3THEN'北美洲'
WHEN8THEN'北美洲'
ELSE'其他'END;
4)结果:
根据工资来判断等级,并统计每一等级的人数。
1)工资表结构(Table_B):
2)表中数据:
3)Sql代码(case2.sql):
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 salay_class,
count(*)
from Table_B
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;
4)结果:
用一个SQL语句完成不同条件的分组:
1)国家性别表结构(Table_C):
2)表中数据:
3)Sql代码(case3.sql):
select country,
SUM(case when sex='1'then
population else0end),---男性人口
SUM(case when sex='2'then
population else0end)--女性人口from Table_C
group by country;
4)结果:
根据条件有选择的UPDATE:
例如:以如下条件更新
1.工资5000以上的职员,工资减少10%。
2.工资在2000到4600之间的职员,工资增加15%
1)职员工资表:
2)表中数据:
3)Sql代码(case4.sql):
update Table_D
set salary = case when salary>=5000
then salary*0.9
when salary>=2000and salary<4600
then salary*1.15
else salary end;
4)结果:
交换主键:
1)交换表结构(Table_E):
2)表中数据:
3)Sql代码(case5.sql):
update TABLE_E
set p_key = case when p_key=1
then2
when p_key=2
then1
else p_key end
where p_key in (1,2);
4)结果:
两个表数据是否一致的检查:
Case函数不同于DECODE函数。
在Case函数中,可以使用BETWEEN,LIKE,IS,NULL,IN,EXISTS等等。
比如说使用IN,EXISTS,可以进行子查询,从而实现更多的功能。
例子:
有两个表tab_A,tab_B,两个表中都有keyCol列。
现在我们对这两个表进行比较,tab_A中的keyCol列的数据如果再tab_B的keyCol列的数据中可以找到,返回结果’Matcched’,如果没有找到,返回结果’Unmatched’。
1)两个表的结构(tbl_A,tbl_B)
Tbl_A:
Tbl_B:
2)表中数据:
Tbl_A:
Tbl_B:
3)Sql代码:
a)In代码(case6.sql):
select keyCol,
case when keyCol in (select keyCol from tbl_B)
then'Matched'
else'Unmatched'end Label
from tbl_A;
b)Exists代码(case7.sql):
select keyCol,
when exists (select * from tbl_B
where tbl_A.Keycol=tbl_B.Keycol)
then'Matched'
else'Unmatched'end Label
from tbl_A;
4)结果:
a)In结果:
b)Exists结果:
在Case函数中使用合计函数:
例题:有的学生选择了同时修几门课程(100,,200)也有的学生只选择了一门课程(300,400,500)。
选修多门课程的学生,要选择一门课程作为主修,主修flag里面写入Y。
只选择一门课程的学生,主修flag为N。
现在我们按照下面两个条件对这个表进行查询
1.只选修一门课程的人,返回那门课程的ID
2.选修多门课程的人,返货所选的主课程ID
1)学生—课程表结构(Studentclass):
2)表中数据:
3)Sql代码(case8.sql):
select std_id,
case when COUNT(*)=1---只选择一门课程的学生的情况then MAX(class_id)
else MAX(case when main_class_flag='Y'
then class_id
else null end
)
end as main_class
from Studentclass
group by std_id;
4)结果:。