sql case 用法总结

  快下班了,抽点时间总结一下sql 的 case 用法。

  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

  注:其中[]内都是可选的。

准备测试数据:

declare @stuinfo table
(id int,
 sname nvarchar(20),
 gender varchar(1),
 sgroup int)

insert into @stuinfo
select 1,‘张三‘,‘m‘,1 union all
select 2,‘李四‘,‘f‘,1 union all
select 3,‘王五‘,‘f‘,2 union all
select 4,‘赵六‘,‘m‘,3 union all
select 5,‘黄七‘,‘m‘,3

1. case后加表达式

  根据表达式结果返回。

select *,
	   case sgroup
	   when 1 then N‘组1‘
	   when 2 then N‘组2‘
	   when 3 then N‘组3‘
	   else N‘未知‘ end groupname
  from @stuinfo

2. case 后不加表达式

  不加表达式,则根据when的条件返回。

select *,
	   case
	   when 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 comment
  from @stuinfo

3. 用于 order by

  如果存储过程需要支持多种排序,可以传递一个参数变量,然后根据该变量判断即可。

declare @orderby int
set @orderby = 1

select * from @stuinfo
order by
	case when @orderby = 1 then id end desc,
	case when @orderby = 2 then id end

  这里要用多个case,因为desc需要放在end 后面,否则会有语法错误。

时间: 2024-10-26 01:41:29

sql case 用法总结的相关文章

sql case when 用法

sql语言中有没有类似C语言中的switch case的语句?? 没有,用case   when   来代替就行了.            例如,下面的语句显示中文年月         select   getdate()   as   日期,case   month(getdate())     when   11   then   '十一'     when   12   then   '十二'     else   substring('一二三四五六七八九十',   month(getda

MySQL · 性能优化 · MySQL常见SQL错误用法

前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来.但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况.阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题.现将<ApsaraDB专家诊断报告>中出现的部分常见SQL问题总结如下,供大家参考. 常见SQL错误用法 1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如

SQL Case 语句的使用

-----简单case 使用 select 学号,姓名, case 专业 when '金融系' then '1' when '材料成型及控制工程' then '2' else '3' end from stu SQL Case 语句的使用,布布扣,bubuko.com

linux之shell编程select和case用法

shell里的select用法: 语法: #i/bin/bash select 变量 in 列表 do     要执行的语句      done 举例: #!/bin/bash echo "What is your favourite OS?" select var in "windows" "Linux" "Gnu Hurd" "Free BSD" "Other"; do    ech

sql STUFF用法

sql STUFF用法 1.作用 删除指定长度的字符,并在指定的起点处插入另一组字符. 2.语法 STUFF ( character_expression , start , length ,character_expression ) 3.示例 以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串 SELECT STUFF('abcdef', 2, 3, 'ijklmn')GO 下面是结果集 ai

Linux上case用法

Linux上case用法示例: #!/bin/bash # This is a script for test case ASK_COUNT=$1 #从参数获取该变量的值 # if [ -z "$ASK_COUNT" ] #判断ASK_COUNT变量是否为空,为空输出1,不为空输出2 then echo "1" else echo "2" fi echo "ASK_COUNT:$ASK_COUNT" case $ASK_COU

一直被用错的6种SQL 错误用法

一直被用错的6种SQL 错误用法 1.LIMIT 语句 2.隐式转换 3.关联更新.删除 4.EXISTS语句 5.条件下推 6.提前缩小范围 sql语句的执行顺序: FROM ON JOIN WHERE GROUP BY HAVING SELECTDISTINCT ORDER BY LIMIT 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引.

sql case when then else end as用法

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搜索函数相比,功能方面会有些限制,比如写判断式. 还有一个需要

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搜索函数