【例】从学生表S中,选取SNO,SEX,如果SB 为“男”则输出“M”,如果为“女”输出“F”。 SELECT SNO SEX CASE Sex WHEN’男THEN’M WHEN’女THEN’F END FROM S
返回 21 【例】从学生表S中,选取SNO,SEX,如果SEX 为“男”则输出“M”,如果为“女”输出“F” 。 SELECT SNO, SEX= CASE sex WHEN '男' THEN 'M' WHEN '女' THEN 'F' END FROM S
格式2: CASE WHEN<〈条件表达式>THEN<运算式 WHEN<〈条件表达式>THEN<运算式 [ELSE<〈运算式为 END >该语句的执行过程是: ◆首先测试WEN后的表达式的值 ◆如果其值为真,则返回THEN后面的表达式的值,否 则测试下一个WN子句中的表达式的值 ◆如果所有WEN子句后的表达式的值都为假,则返回 ELSE后的表达式的值 令如果在CASE语句中没有ELSE子句,则CASE表达式返 回N
返回 22 格式2: CASE WHEN <条件表达式> THEN <运算式> … WHEN <条件表达式> THEN <运算式> [ELSE <运算式>] END ➢该语句的执行过程是: ❖首先测试WHEN后的表达式的值 ❖如果其值为真,则返回THEN后面的表达式的值,否 则测试下一个WHEN子句中的表达式的值 ❖如果所有WHEN子句后的表达式的值都为假,则返回 ELSE后的表达式的值 ❖如果在CASE语句中没有ELSE子句,则CASE表达式返 回NULL
注:CASE命令可以嵌套到SQL命令中。 【例】从SC表中查询所有同学选课成绩情况,凡成绩为 空者输出“未考”、小于60分输出“不及格”、60分至 70分输出“及格”、70分至90分输出“良好”、大于或 等于90分时输出“优秀”。 SELECT SNO CNO SCORE CASE WHEN SCORE IS NULL THEN’未考 WHEN SCORE<60THEN’不及格 WHEN SCORE>=60 AND SCORE<70THEN’及格 WHEN SCORE>=70 AND SCORE<90THEN’良好 WHEN SCORE>=90THEN’优秀 END FROM SC
返回 23 ➢注:CASE 命令可以嵌套到SQL 命令中。 【例】从SC表中查询所有同学选课成绩情况,凡成绩为 空者输出“未考”、小于60分输出“不及格” 、60分至 70分输出“及格” 、70分至90分输出“良好”、大于或 等于90分时输出“优秀” 。 SELECT SNO,CNO, SCORE= CASE WHEN SCORE IS NULL THEN '未考' WHEN SCORE<60 THEN '不及格' WHEN SCORE>=60 AND SCORE<70 THEN '及格' WHEN SCORE>=70 AND SCORE<90 THEN '良好' WHEN SCORE>=90 THEN '优秀' END FROM SC
7.3.2. 4 WHILE. CONTINUE. BREAK 其语法如下: WHILE<条件表达式> BEGIN <命令行或程序块〉 [BREAK LCONTINUE [命令行或程序块] END > WHILE命令在设定的条件成立时,会重复执行命令行 或程序块。 > CONTINUE命令可以让程序跳过 CONTINUE命令之后的 语句,回到ⅥIE循环的第一行,继续进行下一次循环。 > BREAK命令则让程序完全跳出循环,结束 WHILE命令 的执行。 WHILE语句也可以嵌套
返回 24 7.3.2.4 WHILE…CONTINUE…BREAK 其语法如下: WHILE <条件表达式> BEGIN <命令行或程序块> [BREAK] [CONTINUE] [命令行或程序块] END ➢WHILE 命令在设定的条件成立时,会重复执行命令行 或程序块。 ➢CONTINUE 命令可以让程序跳过CONTINUE 命令之后的 语句,回到WHILE 循环的第一行,继续进行下一次循环。 ➢BREAK 命令则让程序完全跳出循环,结束WHILE 命令 的执行。 ➢WHILE 语句也可以嵌套
如:以下程序计算1-1002间所有能被3整除的数的么 数及总和。 DECLARE @S SMALLINT. @I SMALLINT. @NUMS SMALLINT SET @S=0 SET OI=1 SET @NUMS=0 WHILE (OI(=100) BEGIN IF(@I%3=0) BEGIN SET @S=@S+OI SET @NUMS=@NUMS+1 END SET@=@工+1 END PRINT OS PRINT ONUMS U0《回
返回 25 如:以下程序计算1-100之间所有能被3整除的数的个 数及总和。 DECLARE @S SMALLINT,@I SMALLINT,@NUMS SMALLINT SET @S=0 SET @I=1 SET @NUMS=0 WHILE (@I<=100) BEGIN IF (@I%3=0) BEGIN SET @S=@S+@I SET @NUMS=@NUMS+1 END SET @I=@I+1 END PRINT @S PRINT @NUMS