If(...)
Begin
语句块
End
elseif(...)
Begin
语句块
End
Else
Begin
语句块
End;
注意事项
语法中begin..end相当于C#中的{}
执行语句只有一条时,begin..end可以省略
()可以省略,但是如果条件内包含select语句 ,()不能省略
数据库中使用=表示相等判断
2. Case 结构
-- 用于条件是判断相等的时候才可以使用这种语法
case 字段
when 条件1 then 结果
when 条件2 then 结果
else 结果
end
或者
case
when 条件1 then 结果
when 条件2 then 结果
else 结果
end
例:
select Id,NickName,Mobile Age,
case Sex
when 0 then '男'
when 1 then '女'
when 2 then '保密'
when 3 then '未知'
end 性别
from UserInfo
select *,
case
when Age<=10 then '幼年'
when Age between 11 and 25 then '少年'
when Age between 26 and 40 then '青年'
when Age between 41 and 59 then '中年'else'老年'
end 人群
from UserInfo
3. While 循环
while
begin
-- 语句块
end
-- 求1-100的和,碰到3的倍数跳过,如果和大于100则跳出循环
declare @i int=1;
declare @sum int=0;
while(@i<=100)
begin
if(@i%3=0) --3的倍数
begin
set @i=@i+1; -- 循环变量递增
continue;--结束本次循环,进入下一次循环
end;
set @sum=@sum+@i;
if(@sum>=100)
begin
break; -- 如果和大于100则跳出循环
end;
set @i=@i+1; -- 循环变量递增
end;
select @sum,@i;
create function f_sum(@endNum int) returns intas
begin
declare @i int=1;
declare @sum int=0;
while(@i<=@endNum)
begin
set @sum=@sum+@i;
set @i=@i+1;
end;
return @sum;
end;
go
--调用自定义函数
select dbo.f_sum(100)
结合查询语句:
use step2;
-- 查询每个班级的总分
create function f_sumScore(@classId int) returns int
begin
declare @sum int;
select @sum =sum(skillScore) from StudentInfo a
join StudentScore b on a.stuId=b.stuId where ClassId=@classId
return @sum;
end
-- 每个班的总分
select *,dbo.f_sumScore(ClassId) as 总分 from StudentInfo