网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL中Case的语法

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为广大网友收集整理了,SQL中Case的语法,希望对大家有所帮助!


    SQL中Case的语法
    case两种格式:两种格式:
    简单Case函数CASEsexWHEN‘1’THEN‘男’WHEN‘2’THEN‘女’ELSE‘其他’ENDCase搜索函数CASEWHENsex=’1’THEN‘男’WHENsex=’2’THEN‘女’ELSE‘其他’END注意:1)Case函数只返回第一个符合条件的值,剩下的Case部分将会自动忽略例如:CASEWHENcol_1IN(‘a’,’b’)THEN‘第一类’WHENcol_1IN(‘a’)THEN‘第二类’ELSE‘其他’END2)casewhen:case(switch)里的那个when必须是数值型的
    Case函数用途:函数用途:
    已知数据按照另外一种方式分组:已知数据按照另外一种方式分组:
    根据这个国家人口数据,统计亚洲和北美洲的人口数量。根据这个国家人口数据,统计亚洲和北美洲的人口数量。1)国家表结构(Table_A):
     2)
    表中数据:
    3)
    Sql代码(case1.sql):
    SELECTSUM(population),CASEcountryWHEN1THEN'亚洲'WHEN9THEN'亚洲'WHEN6THEN'亚洲'WHEN2THEN'北美洲'WHEN3THEN'北美洲'WHEN8THEN'北美洲'ELSE'其他'ENDFROMTable_AGROUPBYCASEcountryWHEN1THEN'亚洲'WHEN9THEN'亚洲'WHEN6THEN'亚洲'WHEN2THEN'北美洲'WHEN3THEN'北美洲'WHEN8THEN'北美洲'ELSE'其他'END;
    4)
    结果:
    根据工资来判断等级,并统计每一等级的人数。根据工资来判断等级,并统计每一等级的人数。1)工资表结构(Table_B):
     2)
    表中数据:
    3)
    Sql代码(case2.sql):
    selectcasewhensalary<=500then'1'whensalary>500andsalary<=600then'2'whensalary>600andsalary<=800then'3'whensalary>800andsalary<=1000then'4'elsenullendsalay_class,count(*)fromTable_Bgroupbycasewhensalary<=500then'1'whensalary>500andsalary<=600then'2'whensalary>600andsalary<=800then'3'whensalary>800andsalary<=1000then'4'elsenullend;
    4)
    结果:
     用一个SQL语句完成不同条件的分组:语句完成不同条件的分组:
    1)国家性别表结构(Table_C):
    2)
    表中数据:
    3)
    Sql代码(case3.sql):
    selectcountry,SUM(casewhensex='1'thenpopulationelse0end),---男性人口SUM(casewhensex='2'thenpopulationelse0end)--女性人口fromTable_Cgroupbycountry;
    4)
    结果:
     根据条件有选择的UPDATE::
    例如:例如:以如下条件更新1.工资5000以上的职员,工资减少10%。2.工资在2000到4600之间的职员,工资增加15%1)职员工资表:
    2)
    表中数据:
    3)
    Sql代码(case4.sql):
    updateTable_Dsetsalary=casewhensalary>=5000thensalary*0.9whensalary>=2000andsalary<4600thensalary*1.15elsesalaryend;
    4)
    结果:
     交换主键:交换主键:1)交换表结构(Table_E):
    2)
    表中数据:
    3)
    Sql代码(case5.sql):
    updateTABLE_Esetp_key=casewhenp_key=1then2whenp_key=2then1elsep_keyendwherep_keyin(1,2);
    4)
    结果:
    两个表数据是否一致的检查:两个表数据是否一致的检查:
    Case函数不同于DECODE函数。在Case函数中,可以使用
    BETWEEN,LIKE,IS,NULL,IN,EXISTS等等。比如说使用IN,EXISTS,可以进行子查询,从而实现更多的功能。
     例子:有两个表tab_A,tab_B,两个表中都有keyCol列。现在我们对这两个表进行比较,tab_A中的keyCol列的数据如果再tab_B的keyCol列的数据中可以找到,返回结果’Matcched’,如果没有找到,返回结果’Unmatched’。1)两个表的结构(tbl_A,tbl_B)Tbl_A:
    Tbl_B:
    2)
    表中数据:Tbl_A:
    Tbl_B:
    3)
    Sql代码:a)In代码(case6.sql):
    selectkeyCol,casewhenkeyColin(selectkeyColfromtbl_B)then'Matched'else'Unmatched'endLabelfromtbl_A;
    b)
    Exists代码(case7.sql):
     selectkeyCol,whenexists(select*fromtbl_Bwheretbl_A.Keycol=tbl_B.Keycol)then'Matched'else'Unmatched'endLabelfromtbl_A;
    4)
    结果:a)In结果:
    b)
    Exists结果:
    函数中使用合计函数:在Case函数中使用合计函数:
    例题:有的学生选择了同时修几门课程(100,,200)也有的学生只选择了一门课程(300,400,500)。选修多门课程的学生,要选择一门课程作为主修,主修flag里面写入Y。只选择一门课程的学生,主修flag为N。现在我们按照下面两个条件对这个表进行查询1.2.只选修一门课程的人,返回那门课程的ID选修多门课程的人,返货所选的主课程ID1)学生—课程表结构(Studentclass):
     2)
    表中数据:
    3)
    Sql代码(case8.sql):
    selectstd_id,casewhenCOUNT(*)=1---只选择一门课程的学生的情况thenMAX(class_id)elseMAX(casewhenmain_class_flag='Y'thenclass_idelsenullend)endasmain_classfromStudentclassgroupbystd_id;
    4)
    结果:
    
    
  • 上一篇资讯: SQL中case语法的使用
  • 下一篇资讯: SQL与关系代数对应
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师