电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

Oracle使用技巧之case子句的用途VIP免费

Oracle使用技巧之case子句的用途_第1页
1/29
Oracle使用技巧之case子句的用途_第2页
2/29
Oracle使用技巧之case子句的用途_第3页
3/29
case子句的用途语法:casewhen条件1then值1when条件2then值2。。。。。。when条件nthen值nelse值elseendcase子句相当于一个具有多个选择的语句,在多个不同的条件中,选择其中之一,与java语言的case语句类似。例:如果表chinese的字段bh为null,则返回0,如果字段bh为1,则返回99,字段bh为其它值,原样返回。selectcasewhenbhisnullthen0whenbh=1then99elsebhendbhs,xh,codefromchinese一、利用CASE语句更新列值执行本语句将性别为男的伙食补助修改为120,女修改为100UPDATETB_EMP2SET伙食补助=CASEWHEN性别='男'then120WHEN性别='女'then100END当列cj的值为74时,修改其值为80,,为97时,修改其值为100,其它值不变updatetbsetcj=(casecjwhen74then80when97then100elsecjend);当列kc的值为’语文’时,修改列cj=cj+6,,为’物理’时,修改其值为cj+4,其它值不变updatetbsetcj=(casewhenkc='语文'thencj+6whenkc='物理'thencj+4elsecjend);//////////////////////////////////////////////////利用CASE语句进行更新列值执行本语句将性别为男的伙食补助修改为120,女修改为100UPDATETB_EMP2SET伙食补助=CASEWHEN性别='男'then120WHEN性别='女'then100END当列cj的值为74时,修改其值为80,,为97时,修改其值为100,其它值不变updatetbsetcj=(casecjwhen74then80when97then100elsecjend);当列kc的值为’语文’时,修改列cj=cj+6,,为’物理’时,修改其值为cj+4,其它值不变updatetbsetcj=(casewhenkc='语文'thencj+6whenkc='物理'thencj+4elsecjend);case语句在SQL中的使用方法Case具有两种格式。简单Case函数和Case搜索函数。1.简单Case函数CASEsexWHEN'1'THEN'男'WHEN'2'THEN'女'ELSE'其他'END2.搜索case函数CASEWHENsex='1'THEN'男'WHENsex='2'THEN'女'ELSE'其他'END这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。--比如说,下面这段SQL,你永远无法得到“第二类”这个结果CASEWHENcol_1IN('a','b')THEN'第一类'WHENcol_1IN('a')THEN'第二类'ELSE'其他'ENDCase使用集锦一,已知数据按照另外一种方式进行分组,分析。下面的Case语句用在Groupby子句中有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为PrimaryKey)国家(country)人口(population)中国600美国100加拿大100英国200法国300日本250德国200墨西哥50印度250根据国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。洲人口亚洲1100北美洲250其他700想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。如果使用Case函数,SQL代码如下:SELECTSUM(population),CASEcountryWHEN'中国'THEN'亚洲'WHEN'印度'THEN'亚洲'WHEN'日本'THEN'亚洲'WHEN'美国'THEN'北美洲'WHEN'加拿大'THEN'北美洲'WHEN'墨西哥'THEN'北美洲'ELSE'其他'ENDFROMTable_AGROUPBYCASEcountryWHEN'中国'THEN'亚洲'WHEN'印度'THEN'亚洲'WHEN'日本'THEN'亚洲'WHEN'美国'THEN'北美洲'WHEN'加拿大'THEN'北美洲'WHEN'墨西哥'THEN'北美洲'ELSE'其他'END;同样的,我们也可以用这个方法来判断工资的等级,并统计每一等级的人数。SQL代码如下;SELECTCASEWHENsalary<=500THEN'1'WHENsalary>500ANDsalary<=600THEN'2'WHENsalary>600ANDsalary<=800THEN'3'WHENsalary>800ANDsalary<=1000THEN'4'ELSENULLENDsalary_class,COUNT(*)FROMTable_AGROUPBYCASEWHENsalary<=500THEN'1'WHENsalary>500ANDsalary<=600THEN'2'WHENsalary>600ANDsalary<=800THEN'3'WHENsalary>800ANDsalary<=1000THEN'4'ELSENULLEND;二,用一个SQL语句完成不同条件的分组。下面的Case语句用在聚集函数(SUM)中,同时也起到了行转列的作用有如下数据国家(country)性别(sex)人口(population)中国1340中国2260美国145美国255加拿大151加拿大249英国140英国260按照国家和性别进行分组,得出结果如下国家男女中国340260美国4555加...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

Oracle使用技巧之case子句的用途

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部