sql server case函数的使用

本文详细介绍了SQL中的CASE函数,包括其作为流程控制功能的运用,以及两种使用方法:定值判断和区间判断。通过具体的SQL创建表、插入数据和查询示例,展示了如何在查询中根据条件返回不同结果。最后提供了一道练习题,涉及收入和支出的计算,进一步巩固了CASE函数的理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.

  case函数,可以称为case函数称为流程控制函数。

2.两种使用方法

第一种: 定值判断

-- 创建表结构

create table [user]
(
	uId int identity(1,1) primary key,
	uName varchar(50),
	uLevel int  -- 1骨灰 2大虾 3菜鸟
)
-- 插入数据
insert into [user] (uName,uLevel) values ('犀利哥',1)
insert into [user] (uName,uLevel) values ('小月月',2)
insert into [user] (uName,uLevel) values ('芙蓉姐姐',3)

-- 定值判断直接跟字段名
select uId,uName, 
	case uLevel
		when 1 then '骨灰'   -- then 后面的数据类型必须一致
		when 2 then '大虾'
		when 3 then '菜鸟'
	end as '等级'
from [user]

第二种: 区间判断

-- 创建表结构
create table scroe
(
	sId int identity(1,1) primary key,
	sMath int 
)

-- 插入数据
insert into scroe(sMath) values (60)
insert into scroe(sMath) values (66)
insert into scroe(sMath) values (75)
insert into scroe(sMath) values (86)
insert into scroe(sMath) values (95)
insert into scroe(sMath) values (30)
insert into scroe(sMath) values (100)

-- 区间判断 字段名写在when后面
select sId,
	case 
		when sMath between 60 and 70 then '及格'
		when sMath between 70 and 80 then '良好'
		when sMath between 80 and 90 then '优秀'
		when sMath between 90 and 100 then '满分'
		when sMath between 0 and 60 then '不及格'
	end as '数学成绩'
from scroe

3. 练习题

-- 表结构
create table Test
(
	number varchar(10),
	amount int
)
insert into Test(number,amount) values('RK1',10)
insert into Test(number,amount) values('RK2',20)
insert into Test(number,amount) values('RK3',-30)
insert into Test(number,amount) values('RK4',-10)

-- 答案
select number as '单号',
	case 
		when amount > 0 then amount
		else 0
	end as '收入',
	case 
		when amount < 0 then abs(amount) -- abs绝对值函数
		else 0
		end as '支出'
from Test

注意: 每个case...end 后面要起个列名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值