sql中有“分支语句”吗?比如 switch 对几种并行的情况分别处理?
--------------------------------------------------------
在帮助中没有找到 “分支语句”,难道只能用 多层 if 语句进行嵌套吗?假如变量 @a 有4个值,1,2,3,4,要根据不同的值分别处理
比如下面的代码,太难看了吧!if (@a=1)
begin
mmmmmmmm
mmnnnnnnnn
end
else
begin
if (@a=2)
begin
uuuuuuuuuuu
ioioioioi
end
else
begin
if (@a=3)
begin
3333333333333
333333333
end
else
begin
if (@a=4)
begin
4444444444444
444444444
end
end
end
end
--------------------------------------------------------
在帮助中没有找到 “分支语句”,难道只能用 多层 if 语句进行嵌套吗?假如变量 @a 有4个值,1,2,3,4,要根据不同的值分别处理
比如下面的代码,太难看了吧!if (@a=1)
begin
mmmmmmmm
mmnnnnnnnn
end
else
begin
if (@a=2)
begin
uuuuuuuuuuu
ioioioioi
end
else
begin
if (@a=3)
begin
3333333333333
333333333
end
else
begin
if (@a=4)
begin
4444444444444
444444444
end
end
end
end
能代替分支语句用吗?
if (@a=1)
begin
mmmmmmmm
mmnnnnnnnn
end
if (@a=2)
begin
mmmmmmmm
mmnnnnnnnn
end
直观点
if (@a=1)
begin
select '1'
end
else if (@a=2)
begin
select '2'
end
else if (@a=3)
begin
select '3'
end
else if (@a=4)
begin
select '4'
end
为什么不这样写
我的代码确实有问题,if语句,不应该放在begin end块中。
BEGIN
END
ELSE IF
BEGIN
END
ELSE IF
BEGIN
END
ELSE
BEGIN
END
我的意思是,case when 只能用在 select 语句中呀。
我想在程序中处理分支,处理复杂的逻辑。
用 case 不方便呀,case 只能配合着 select 语句用呀。
用这个的话简单了很多 ~
怎么不是了呢
when 1 then print '1'
when 2 then print '2'
when 3 then print '3'
else print 'other'
end
12楼地代码,就像实现这个简单的功能,但是 case 实现不了呀。
declare @j varchar(10)set @i=1select @j=
case @i
when 1 then '1'
when 2 then '2'
when 3 then '3'
else 'other'
end
print @j
说到底,case语句,只能实现通过不同的分支,得到一个值,别的做不了。
比如根据不同的分支,执行不同的操作,case是不能实现的(包括简单的打印都实现不了)。上面的代码,也是得到一个值@i,然后再 case 语句外在打印呀。
select
case @a when 1 then '1'
when 2 then '2'
when 3 then '3'
when 4 then '4'
end
declare @i int
set @i = 2print case @i when 1 then 1 when 2 then 2 else 99 end
case when 只能实现分支赋值呀。在每个分支,除了赋值,别的什么也做不了呀。
case when 是分支语句不错,但不是真正意义上的分支,比如 javascript 中的 switch 语句,在每个分支可以进行任何操作。case when 只是用在 select 中的分支呀。不知你明白没有???
你看看19楼写的,是select ?
print 与 select 一样,就是输出值(数字,或者字符串)
我的本质含义是说,case when 的分支中,只能进行赋值操作,不能进行别的操作。
比如我要在一个分支中执行 update ,insert ,用case when 行吗?
但是 case 语句的每个分支只能进行 赋值 操作。
别咬文嚼字,探讨实际的问题。所以我说,case 语句不是真正的“分支语句”
我不知,xuam 先生是真的不明白,还是我的表达能力太差了。
1. if else
2. goto + label 不推荐。