SQLserver update与多层条件判断

本文探讨了在SQL中如何使用CASE...WHEN...THEN...和IIF函数进行多层条件判断来更新数据。通过案例展示了如何根据不同的列值修改特定列,例如在UPDATE语句中根据mon_num和hou_num的值将数据分为'low'、'mid'和'hig'三个类别。这种技巧在数据库管理和数据操作中十分实用。
摘要由CSDN通过智能技术生成

条件判断使用IF…ELSE...或CASE...WHEN...THEN...

if用于代码块,case用于增删查改内部

想要根据多列修改某列值,就需要多层判断。

UPDATE #a
SET [修改列] = 
CASE 
	WHEN [第1层条件] THEN
		CASE WHEN [第2层条件] THEN '值1'
			 WHEN [第2层条件] THEN '值2'
			 WHEN [第2层条件] THEN '值3'
		END
	WHEN [第1层条件] THEN
		CASE WHEN [第2层条件] THEN '值4'
			 WHEN [第2层条件] THEN '值5'
			 WHEN [第2层条件] THEN '值6'
		END
END

使用iif同样能达到效果。(iif是在增删查改内部使用)

iif(第一层判断,iif(第二层判断,内容A,内容B),iif(第二层判断,内容C,内容D))

PS:[列名] in (x,y,z,a,b,c) 也算判断条件

列如举例,两层判断修改

UPDATE #a
SET [hou_num] = 
CASE 
	WHEN mon_num in(1,7,8,12) THEN
		CASE WHEN hou_num in('0','1','2','3','4','5','6','7','11','12','22','23') THEN 'low'
			 WHEN hou_num in('8','17','18','19','20','21') THEN 'mid'
			 WHEN hou_num in('9','10','13','14','15','16') THEN 'hig'
		END
	WHEN mon_num in(2,3,4,5,6,9,10,11) THEN
		CASE WHEN hou_num in('0','1','2','3','4','5','6','7','11','12','22','23') THEN 'low'
			 WHEN hou_num in('8','13','14','17','18','19','20','21') THEN 'mid'
			 WHEN hou_num in('9','10','15','16') THEN 'hig'
		END
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值