服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sql Server - SQL Server高级内容之case语法函数概述及使用

SQL Server高级内容之case语法函数概述及使用

2020-01-02 15:38MSSQL教程网 Sql Server

本文将详细介绍下Case函数的用法感兴趣的你可以参考下,或许对你有所帮助

1.Case函数的用法 
(1)使用类似:switch-case与if-else if。 
(2)语法: 
    case [字段] 
      when 表达式 then 显示数据 
      when 表达式 then 显示数据 
      else 显示数据 
    end 
(3)百分制转换素质教育 
1)如图:我们要将显示的数据转换成ABCDE,规则是90分以上显示A,80分以上显示B,以此类推。
     SQL Server高级内容之case语法函数概述及使用

2)执行的SQL语句是:

复制代码代码如下:

      Select ID,TestBase, 
      Case 
        When testBase>=90 then ‘A' 
      When testBase>=80 then ‘B' 
        When testBase>=70 then ‘C' 
        When testBase>=60 then ‘D' 
         Else ‘E' end as testBaseLevel, 
    testBeyond,testDate from Score 


3)最后的执行结果如图所示:

 

 SQL Server高级内容之case语法函数概述及使用

 

(4)注意: 
    1)写case对应的就写上end。 
    2)end后面跟别名(case与end之间相当于一个字段(对象)) 
(5)和C#的switch-语法作比较 
1)C# 
      Switch(变量) 
      { 
        Case 常量1:结果1;break; 
        Case 常量2:结果2;break; 
        Default :默认结果;break; 
      } 
2) SQL 
      SQL语法我在上面写了,可以对比看一下。 
(6)对应的if-else if语法 
    1) C# 
      If(表达式1) {结果1;} 
      else if(表达式2) {结果2;} 
      else {默认结果;} 
    2)SQL Server 
      case 
        when 表达式1 then 显示1 
        when 表达式2 then 显示2 
        else 默认显示 
      end 
3)举例说明,如果我们存放性别的时候在数据库中是用f,m标识的,现在我们想要用男女标识,SQL语句如下: 

复制代码代码如下:

       Select ID,Name,stuSex, 
        case 
          when stuSex='m' then ‘男' 
          when syuSex='f' then ‘女' 
          else ‘其它' 
        end as stuSexType, 
      stuDate from Student。 


(7)练习案例: 
1)在数据库中执行这段代码: 

复制代码代码如下:

      use Test 
      go 
      create table PracticeTest 
      ( 
        number varchar(10), 
        amount int 
      ) 
      insert into PracticeTest(number,amount) values('RK1',10) 
      insert into PracticeTest(number,amount) values('RK2',20) 
      insert into PracticeTest(number,amount) values('RK3',-30) 
      insert into PracticeTest(number,amount) values('RK4',-10) 


2)实现的效果如下:
     SQL Server高级内容之case语法函数概述及使用

 

3)可以看出,首先select中应该有三个字段,并且将数据大于0的放到收入中,那么另一个为0,并且将小于0的放到支出里面,另一个为0,下面我们写实现的SQL语句:

复制代码代码如下:

       select number as 单号, 
        case 
          when amount>0 then amount 
          else 0 
        end as 收入, 
        case 
          when amount<0 then -amount 
          else 0 
        end as 支出 
      from PracticeTest 


(8)一道面试题的练习:

 

1)如图:我们写出下面执行的代码,数据库大家自己建或者我在下面附加脚本了,大家制药执行一下即可:

       SQL Server高级内容之case语法函数概述及使用

2)执行的SQL语句:

复制代码代码如下:

  create table Score 
      ( 
        学号 nvarchar(10), 
        课程 nvarchar(10), 
        成绩 int 
      ) 
      insert into Score values('0001','语文',87) 
      insert into Score values('0002','数学',79) 
      insert into Score values('0003','英语',95) 
      insert into Score values('0004','语文',69) 
      insert into Score values('0005','数学',84) 


3)实现功能的SQL语句的书写

复制代码代码如下:

        select 学号,sum( 
        case 
          when 课程='语文' then 成绩 
          else 0 
        end) as 语文,sum( 
        case 
          when 课程='数学' then 成绩 
          else 0 
        end) as 数学,sum( 
        case 
          when 课程='英语' then 成绩 
          else 0 
        end) as 英语 
      from score group by 学号 


相信自己,你就是下一个奇迹!

延伸 · 阅读

精彩推荐