34,594
社区成员
发帖
与我相关
我的任务
分享
DECLARE @I int
...
IF @I = 1
BEGIN
UPDATE 表 SET 字段1 = xx
END
ELSE IF @I = 2
BEGIN
UPDATE 表 SET 字段2 = xx
END
ELSE IF @I = 3
BEGIN
UPDATE 表 SET 字段3 = xx
END
...
一大堆 IF ELSE , 想用 CASE 来实现
...
CASE @I
WHEN 1 BEGIN UPDATE 表 SET 字段1 = xx END
WHEN 2 BEGIN UPDATE 表 SET 字段2 = xx END
WHEN 3 BEGIN UPDATE 表 SET 字段3 = xx END
ELSE ...
END
...
declare @tb table(id int,name nvarchar(10))
insert into @tb select 1,'张三'
union all select 2,'李四'
union all select 3,'三五'
declare @var int
set @var=1
--update @tb set id=1
update @tb set id = (case when @var=1 then 1 end),
name= case when @var=1 then 'china' end
select * from @tb
(3 行受影响)
id name
----------- ----------
1 china
1 china
1 china
(3 行受影响)
DECLARE @I int
set @i=x
update tb set Col1=(case when @i=1 then xxx else Col1 end),
Col2=(case when @i=2 then xxx else Col2 end),
Col3=(case when @i=3 then xxx else Col3 end),
Col4=(case when @i=4 then xxx else Col4 end)
....
DECLARE @CMD NVARCHAR(100).@I int
CASE @I
WHEN 1 @CMD='UPDATE 表 SET 字段1 = xx'
WHEN 2 @CMD='UPDATE 表 SET 字段2 = xx'
WHEN 3 @CMD='UPDATE 表 SET 字段3 = xx'
ELSE END
EXEC(@CMD)
--TRY
DECLARE @S VARCHAR(200)
DECLARE @I INT
SET @I=3
SET @S='UPDATE 表 SET 字段'+LTRIM(@I)+'=XX'
--PRINT @S
EXEC (@S)
DECLARE @I int
DECLARE @S varchar(8000)
SET @S=
CASE @I
WHEN 1 THEN 'UPDATE 表 SET 字段1 = xx'
WHEN 2 THEN 'UPDATE 表 SET 字段2 = xx'
WHEN 3 THEN 'UPDATE 表 SET 字段3 = xx'
ELSE ...
END
EXEC(@S)
UPDATE
表
SET
字段1=case @I when 1 then xx else 字段1 end,
字段2=case @I when 2 then xx else 字段2 end,
...