第10章函数

  • 格式:pps
  • 大小:385.50 KB
  • 文档页数:42

实用教程电子工业出版社出版10章SQL Server 函数为了使用户对数据库进行查询和修改时更加方便,SQL server在T-SQL语言中提供了许多内部函数以供调用。用户也可以根据自己的需要创建函数。系统提供的函数称为内置函数;用户创建的函数称为用户自定义函数。10章SQL Server 函数10.1 常用系统函数10.2 创建自定义函数10.3 用户自定义函数类型10.4修改和删除自定义函数10.5 案例中的自定义函数常用系统函数系统函数为三类:标量函数、聚合函数和行集函数。标量函数:对单一值操作,返回单一值。聚合函数:对一组值进行计算后,向调用者返回单一的值。

行集函数:返回对象,该对象可在SQL 语句中用作表引用。

对于每一个系统函数需要掌握两点:函数功能调用形式标量函数数学函数1、求绝对值函数调用形式:abs(数值型表达式)功能:返回表达式的绝对值,其值的数据类型与参数一致。

2、求ASCLL码函数调用形式:ascii(字符)功能:返回字符的ASCLL码值,值的类型为整型。标量函数数学函数3、ceiling(数值型表达式)功能:返回最小的大于或等于给定数值型表达式的整数值,值的类型和给定的值相同。

4、floor(数值型表达式)功能:返回最大的小于或等于给定数值型表达式的整数值。标量函数数学函数5、power(表达式1,表达式2)功能:进行乘方运算,求表达式的表达式2的次方,值的数据类型和第一个参数的数据类型相同。6、PI( )功能:求圆周率。7、sqrt(表达式)功能:求表达式的平方根。8、sign(数值型表达式)功能:判断数值的正负属性,+1表示正数;-1表示负数。标量函数数学函数9、rand(整型表达式)功能:返回一个位于0和1之间的随机数,在单个查询中反复调用rand( )将产生相同的值。10、round(数值表达式,整数)功能:将数值四舍五入成整数指定的精度形式。整数为正表示要进行的运算位置在小数点后,为负表示在小数点前。标量函数字符串函数1、len(字符串表达式)功能:返回给定字符串表达式的字符个数,其中不包含尾随空格,注意不是字节个数,返回类行为int.2、datalength(表达式)功能:返回该表达式所占用的字节数,返回类型为int。对varchar ,text,image,nvarchar,ntext数据类型特别有用,因为这些数据类型可以存储可变长数据。标量函数字符串函数3、char(整形表达式)功能:将给定的整形表达式的值按照ASCLL码转换为字符型。整形表达式的值介于0~255之间,否则返回null。4、substring(字符串,star,length)功能:从字符串的star位置返回长度为length的字符串。5、left(字符型表达式,整形表达式)功能:返回从字符串左边开始指定个数的字符。right(字符型表达式,整形表达式)功能:返回从字符串右边开始指定个数的字符。标量函数字符串函数6、upper(字符型表达式)功能:将字符型表达式全部转化为大写形式。lower(字符型表达式)功能:将字符型表达式全部转化为大写形式。7、ltrim(字符型表达式)功能:删除左端空白。rtrim(字符型表达式)功能:删除右端空白。标量函数字符串函数8、str(float型表达式,长度1,长度2)功能:将float型表达式转化为给定形式的字符串。长度1表示总长度且包含小书店,长度2表示小数点后边的位数。

例:print str(123.45 , 6 , 1 )转换为有六个位置的字符串,小数部分四舍五入。print str(123.45 , 2 , 2 )当表达式超出指定长度时,返回* . *标量函数日期型函数1、getdate( )功能:返回当前的系统时间。2、datepart(datepart , date)功能:以整数的形式返回给定的date型数据的指定日期部分。datename(datepart , date)功能:以字符串的形式返回给定的date型数据的指定日期部分。datepart的取值_____P3053、day(date) 返回指定日期day部分的数值。month(date) 返回指定日期month部分的数值。year(date) 返回指定日期year部分的数值。聚合函数SQLServer提供了十几个聚合函数,下面我们将介绍几个最常用的聚合函数:

COUNT(*):用于计算所有行数MIN(数值表达式):用于计算表达式的最小值MAX(数值表达式):用于计算表达式的最大值SUM(数值表达式):用于计算表达式的和AVG(数值表达式):用于计算表达式的平均值聚合函数例:使用聚合函数统计STUDENT数据库中学生的成绩情况。其程序清单如下:USESTUDENTGOSELECTCOUNT(*)AS课程门数,MAX(成绩)AS最高分数,MIN(成绩)AS最低分数,SUM(成绩)AS总成绩,AVG(成绩)AS平均成绩FROM课程注册GROUPBY学号GO创建自定义函数1.使用企业管理器创建用户定义函数在企业管理器中创建用户自定义函数的步骤为:

1)在企业管理器中,选择需要建立函数的数据库,从中选择用户定义函数图标。2)选择用户定义函数图标后,击右健,从弹出的快捷菜单中选择“新建用户定义函数”命令,打开“用户定义函数属性”对话框,该属性窗口在“文本”框中列出了建立函数的框架,如图10.1所示。创建自定义函数3)在“文本”框中输入函数的所有者、函数名称、参数列表、返回类型和函数体等函数的各个组成部分。4)单击“检查语法”按钮,检查输入的建立函数语句是否有语法错误。如果没有语法错误,单击“确定”按钮,将用户定义的函数保存到数据库中供用户以后使用。图10.1“用户定义函数属性”对话框用户自定义函数类型用户自定义函数T_SQL语言允许用户通过创建自己的用户自定义函数来补充和扩展系统支持的内置函数。分类:标量函数表值函数多语句表值函数对于每一种函数掌握两点:创建和调用标量函数:返回单个数据值。表值函数:返回值是一个记录集合——表。在此函数中,return语句包含一条单独的select语句。多语句表值函数:返回值是由选择的结果构成的记录集。修改和删除用户自定义函数类型10.3.1标量函数10.3.2内嵌表值函数10.3.3多语句表值函数标量函数标量函数与系统内置标量函数类似,返回在RETURNS子句中定义的类型的单个数据值。当需要在代码中的多个位置进行相同的数学计算时,标量函数十分有用。

1)创建标量函数在STUDENT库中创建一个用户自定义函数XUEFENJI,该函数通过输入成绩来计算学生的学分绩。

其代码如下:USESTUDENTGO标量函数CREATEFUNCTIONxuefenji(@inputzzint)RETURNSnvarchar(10)BEGINdeclare@retrunstrnvarchar(10)if@inputzz>=50AND@inputzz<60set@retrunstr='学分绩为0.8'elseif@inputzz>=60AND@inputzz<70set@retrunstr='学分绩为1.0'elseif@inputzz>=70AND@inputzz<80set@retrunstr='学分绩为1.2'elseif@inputzz>=80AND@inputzz<=100set@retrunstr='学分绩为1.5'elseset@retrunstr='无学分绩'return@retrunstrEND标量函数2)使用标量函数:当需要查看“010101001001”号学生的课程学分绩时,在查询分析器中输入如下代码:

USESTUDENTGOSELECT课程号,成绩,dbo.xuefenji(成绩)AS学分绩FROM课程注册WHERE学号='010101001001'GO执行该代码后,得到如下结果:课程号成绩学分绩------------------000185学分绩为1.5000285学分绩为1.5000345无学分绩000475学分绩为1.2(所影响的行数为4行)内嵌表值函数内嵌表值函数返回的结果是表,其表是由单个SELECT语句形成。

建立内嵌表值函数要遵从以下规则:RETURNS子句仅包含关键字table。不必定义返回变量的格式,因为它由RETURN子句中的SELECT语句的结果集的格式设置。

function_body不由BEGIN和END分隔。RETURN子句在括号中包含单个SELECT语句。SELECT语句的结果集构成函数所返回的表。内嵌表值函数中使用的SELECT语句受到与视图中使用的SELECT语句相同的限制。