本文是一篇化工系论文范文,化工系有关毕业论文范文,关于Case函数在信息查询中应用相关电大毕业论文范文。适合化工系及信息管理系统及计算机系方面的的大学硕士和本科毕业论文以及化工系相关开题报告范文和职称论文写作参考文献资料下载。
摘 要信息管理系统已深透到生活工作中和各个部分,在信息管理系统中很重要的一部分是从中得到所需要的信息,Case函数在信息查询中有着不可替代的作用,本文就Case函数在信息查询中的应用进行了探讨.
关 键 词信息管理系统;查询;CASE函数
中图分类号O1文献标识码A文章编号1674-6708(2012)79-0092-02
当前信息经济时代,信息是企业发展不可或缺的重要组成部分,它有时决定着一个企业的发展甚至生存.在企业信息管理系统中,信息查询是最重要的组成部分之一,通过查询可以得到企业生产的基本信息、企业的生产信息、企业的经营信息及相关的其它信息,通过这些信息的分析,可以用来指导企业的生产和经营决策.下面结合实际应用,给出了Case函数在信息查询中应用示例,以帮助大家掌握对查询的应用.
1CASE函数介绍
1.1CASE函数形式
CASE函数有两种形式.
1.1.1简单CASE函数
格式:CASE输入表达式
WHEN当表达式THEN结果表达式[...n]
[ELSE其它结果表达式]
END
功能:首先计算输入表达式,然后按指定顺序判断每个WHEN子句的当表达式是否与输入表达式相等,返回第一个相等的结果表达式的值;如果没有相等的,则当指定ELSE子句时SQLServer将返回其它表达式的值;若没有指定ELSE子句,则返回NULL值.
1.1.2CASE搜索函数
格式:CASE
WHEN布尔表达式THEN结果表达式[...n]
[ELSE其它结果表达式]
END
功能:按指定顺序求每个WHEN子句布尔表达式的值,返回第一个取值为TRUE的结果表达式的值;如果没有取值为TRUE的布尔表达式,则当指定ELSE子句时SQLServer将返回其它结果表达式的值;若没有指定ELSE子句,则返回NULL值.
1.2参数说明
1)输入表达式:任何有效的MicrosoftSQLServer表达式;
2)当表达式:任意有效的SQLServer表达式.输入表达式和每个当表达式的数据类型必须相同,或者是隐性转换;
3)N:占位符,表明可以使用多个“WHEN当表达式THEN结果表达式”子句或“WHEN布尔表达式THEN结果表达式”子句;
4)结果表达式和其它结果表达式:是任意有效的SQLServer表达式;
5)布尔表达式:任意有效的布尔表达式.
1.3结果类型
从结果表达式和其它结果表达式的类型集合中返回最高的优先规则类型.
2数据表及说明
下表是宿舍信息管理系统中的宿舍分数表,w1-w5分别是星期一到星期五的分数,其中没有成绩的为当天没有查此宿舍.
3CASE在信息查询中应用
3.1查询周平均分
由于星期一到星期五不是每天查所有的宿舍,没有被查的宿舍成绩为null,如果直接把null的数据与其它数据进行计算,结果还是为null,所以计算平均分数时,不可以使用下面语句进行计算和查询.
SELECT楼号,宿舍,平均分等于(w1+w2+w3+w4+w5)/5FROM分数表
需要使用CASE函数把每天的分数进行转化,有成绩的按成绩计算,没有成绩的不计算在内或者说按0计算,并用相似的方法统计宿舍被查的天数,最后计算平均值,查询语句格式如下.
SELECT楼号,宿舍,平均分等于(casewhens1isnotnullthens1else0end
+casewhens2isnotnullthens2else0end
+casewhens3isnotnullthens3else0end
+casewhens4isnotnullthens4else0end
+casewhens5isnotnullthens5else0end)/
(casewhens1isnotnullthen1else0end
+casewhens2isnotnullthen1else0end
+casewhens3isnotnullthen1else0end
+casewhens4isnotnullthen1else0end
+casewhens5isnotnullthen1else0end)
FROM分数表
3.2多条件不定组合模糊查询
在宿舍管理过程中,经常会遇到多条件不同组合模糊查询的需求,为了很好地完成这个功能,可以设计一个存储过程,使用CASE函数和CHARINDEX函数来完成查询条件的设置.例如经常需要查询某班、某宿舍、男生或女生的分数情况;这些条件的组合有多种,有时需要查某班宿舍的分数,有时需要查某班男生或女生宿舍的分数,有时需要查某宿舍的分数.可以设计下面代码的存储过程.
DECLARE@classvarchar(10),@SEXvarchar(2),@hotelvarchar(10);
SELECT*
FROM分数表
WHERECHARINDEX(
(CASEWHEN@class等于''THEN班级编号ELSE@classEND),
FirstName
)>0ANDCHARINDEX(
(CASEWHEN@SEX等于''THEN性别ELSE@SEXEND),
性别
)>0
ANDCHARINDEX(
(CASEWHEN@hotel等于''THEN宿舍ELSE@hotelEND),
宿舍
)>0
3.3统计查询每系部男生女生各优秀宿舍数目
在分数表中,只有班级编号,没有班级名信息,其中bj1-bj3是化工系班级,bj4-bj6是建工系班级,其它为计算机系班级.在按系部统计男女生优秀宿舍的数目时,需要首先把班级编号转化为系部,然后再统计各系部的优秀宿舍数目,可以使用CASE函数把班级编号转化为具体系部,如果平均分为98分以上的为优秀,查询语句的格式如下:
SELECT
CASE班级编号
WHEN'bj1'THEN'化工系'
WHEN'bj2'THEN'化工系'
WHEN'bj3'THEN'化工系'
WHEN'bj4'THEN'建工系'
WHEN'bj5'THEN'建工系'
WHEN'bj6'THEN'建工系'
ELSE'计算机系'END系部,性别,count(*)数量
INTO优秀宿舍数
FROM宿舍成绩表
WHERE平均分>等于98
GROUPBYCASE班级编号
WHEN'bj1'THEN'化工系'
WHEN'bj2'THEN'化工系'
WHEN'bj3'THEN'化工系'
WHEN'bj4'THEN'建工系'
WHEN'bj5'THEN'建工系'
WHEN'bj6'THEN'建工系'
ELSE'计算机系'END,性别
3.4表格转换
有时需要把表格转换成更适合人们习惯、更易接受的表格.下面把优秀宿舍数表(字段:系部,性别,数量)转化为各系优秀宿舍数表(字段:系部,男,女),使用Case函数来完成此功能.
SELECT系部,
SUM(CASEWHEN性别等于'男'THEN
数量ELSE0END)‘男’,-统计男性宿舍
SUM(CASEWHEN性别等于'女'THEN
数量ELSE0END)‘女’-统计女性宿舍
INTO各系优秀宿舍数
FROM优秀宿舍数
前面是CASE函数在信息查询中的几个方面的应用,通过这几个实例可以看到,CASE函数功能很强,如果应用好CASE函数,可以大大提高我们查询的功能和查询效率,它的应用还不止这么多,这需要我们去总结和挖掘.