在SQL SERVER中,提供了一些简单的逻辑控制语句,在平时的运用中这些结构起着很大的作用,下面对这些结构作一些简单的说明。
一 IF-ELSE条件语句
语法:IF()
语句或语句块
ELSE
语句或语句块
若有多条语句,则使用语句块,语句块使用BEGIN...END表示,其作用相当于Java语句的“{}”符号。
IF()
BEGIN
语句1
语句1
.....
END
ELSE
例如从成绩表TScore中查询,本班的平均分数在70分以上,则显示“成绩优秀”显示前3名的考试信息;否则显示“成绩较差”并显示后3名的考试信息。
declare @myavg float
select @myavg = avg(score) from TScore
print '本班平均分'+convert(varchar(5),@myavg)
if(@myavg > 70)
begin
print '本班成绩优秀,前三名成绩为:'
select top 3 * from TScore order by score desc
end
else
begin
print '本班成绩较差,后三名成绩为:'
select top 3 * from TScore order by score
end
二 WHILE 循环语句 :在循环语句中使用continue和break关键字来控制语句的执行。
语法:
WHILE(条件)
语句或语句块
[BREAK]
使用break关键字从最内层的while循环中退出。
例如本次考试成绩较差,要提分,确保每人的成绩都通过,提分规则,先给每人加2分,看是否通过,如没有全通过,继续加2分,直到每人都通过为止。
declare @n int
while(1=1)
begin
select @n = count(*) from TScore where score < 60
if(@n > 0)
update TScore set score = score + 2
else
break
end
三 CASE 多分支语句:相当于多重if语句
语法:
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
[ELSE 其他结果]
END
例如:成绩表TScore中,用等级来评成绩分数。A:90分以上,B:80~89,C:60~79,D:60分以下,并显示他们的学号stuNO。
代码:select stuNO,成绩 = CASE
when score >= 90 then 'A'
when score between 80 and 89 then 'B'
when score between 60 and 79 then 'C'
else 'D'
end from TScore