1、南通航运职业技术学院南通航运职业技术学院 数据库课程组数据库课程组第十二章第十二章Transact-SQL Transact-SQL 语言语言 第十七课17.1 17.1 数学函数数学函数 17.2 17.2 字符串函数字符串函数17.3 17.3 日期和时间函数日期和时间函数17.4 17.4 元数据函数元数据函数17.5 17.5 系统函数系统函数17.6 17.6 聚合函数聚合函数 课后作业课后作业 SQL ServerSQL Server系统内置函数系统内置函数 SQL Server的数学函数主要用来对数值表达式进行数学运算的数学函数主要用来对数值表达式进行数学运算并返回运算结果。数学
2、函数也可以对并返回运算结果。数学函数也可以对SQL Server提供的数值数据提供的数值数据(decimal、integer、float、real、money、smallmoney、smallint和和tinyint)进行处理。常用的数学函数见表)进行处理。常用的数学函数见表12-2。【例【例17.1】求绝对值。】求绝对值。SELECT ABS(-1.0),ABS(0.0),ABS(1.0)下面是结果集:下面是结果集:1.0 0.0 1.0 【例【例17.2】显示使用】显示使用 CEILING 函数的正数、负数和零值。函数的正数、负数和零值。SELECT CEILING($123.45),CE
3、ILING($-123.45),CEILING($0.0)GO 下面是结果集:下面是结果集:124.00 -123.00 0.00 【例【例17.3】计算给定角度的】计算给定角度的 SIN 值。值。DECLARE angle float SET angle=45.175643 SELECT The SIN of the angle is:+CONVERT(varchar,SIN(angle)GO 结果:结果:The SIN of the angle is:0.929607 【例【例17.4】使用】使用RAND 函数产生函数产生4个不同的随机值。个不同的随机值。DECLARE counter s
4、mallint SET counter=1 WHILE counter 5 BEGIN SELECT RAND(counter)Random_Number SET NOCOUNT ON SET counter=counter+1 SET NOCOUNT OFF END GO 【例【例17.5】求半径为求半径为 1 英寸、高为英寸、高为 5 英寸的圆柱容积。英寸的圆柱容积。DECLARE h float,r float SET h=5 SET r=1 SELECT PI()*SQUARE(r)*h AS 圆柱容积圆柱容积 下面是结果:下面是结果:圆柱容积圆柱容积 15.7079632679489
5、66 【例【例17.6】求】求 1.00 到到 10.00 之间的数字的平方根。之间的数字的平方根。DECLARE myvalue float SET myvalue=1.00 WHILE myvalue 10.00 BEGIN SELECT SQRT(myvalue)SELECT myvalue=myvalue+1 END GO 【例【例17.7】计算给定】计算给定float表达式的表达式的 LOG。DECLARE var float SET var=5.175643 SELECT The LOG of the variable is:+CONVERT(varchar,LOG(var)GO
6、下面是结果集:下面是结果集:The LOG of the variable is:1.64396 (1 row(s)affected)字符串函数可以对二进制数据、字符串和表达式执行不同的字符串函数可以对二进制数据、字符串和表达式执行不同的运算。大多数字符串函数只能用于运算。大多数字符串函数只能用于char和和varchar数据类型,少数据类型,少数几个字符串函数也可以用于数几个字符串函数也可以用于binary、varbinary数据类型,还有数据类型,还有某些字符串函数能够处理某些字符串函数能够处理text、ntext、image数据类型的数据。数据类型的数据。常用的字符串函数见表常用的字符串
7、函数见表12-3。【例【例17.8】求解求解ASCII函数。函数。SELECT ASCII(A)AS A,ASCII(AB)AS AB 下面是结果集:下面是结果集:A AB 65 65 【例【例17.9】使用】使用CHAR函数将函数将ASCII码转换为字符。码转换为字符。SELECT CHAR(43),CHAR(70),CHAR(-1)下面是结果集:下面是结果集:+F NULL 【例【例17.10】字符串大小写转换。字符串大小写转换。SELECT LOWER(ABC),UPPER(xyz)结果:结果:abc XYZ 【例【例17.11】把数值型数据转换为字符型数据。把数值型数据转换为字符型数据
8、。SELECT STR(346),STR(346879,4),STR(-346.879,8,2),STR(346.8,5),STR(346.8)结果:结果:346 *-346.88 347 347 【例【例17.12】从字符串中取出子字符串。】从字符串中取出子字符串。SELECT LEFT(SQL Server,3),RIGHT(SQLServer,3),LEFT(RIGHT(SQL Server,6),4)结果:结果:SQL ver Serv 【例【例17.13】字符串替换。】字符串替换。SELECT REPLACE(计算机网络计算机网络,网络网络,通信理论通信理论),STUFF(关系数据库
9、理论关系数据库理论,6,2,与与SQL)结果:结果:计算机通信理论计算机通信理论关系数据库与关系数据库与SQL 日期和时间函数用于对日期和时间数据进行各种不同的处理日期和时间函数用于对日期和时间数据进行各种不同的处理和运算,并返回一个字符串、数字值或日期和时间值。和运算,并返回一个字符串、数字值或日期和时间值。T-SQL提提供的日期和时间函数见表供的日期和时间函数见表12-4。【例【例17.14】获取系统日期函数和时间的年份、月份、日期。】获取系统日期函数和时间的年份、月份、日期。SELECT GETDATE(),DAY(GETDATE(),MONTH(GETDATE(),year(GETDA
10、TE()下面是结果集:下面是结果集:2019-12-16 19:46:06.45016122019 【例【例17.15】返回当前月份。】返回当前月份。SELECT DATEPART(month,GETDATE()AS 月份月份 GO 下面是结果集:下面是结果集:月份月份 12 【例【例17.16】返回指定日期加上额外日期后产生的新日期。】返回指定日期加上额外日期后产生的新日期。SELECT DATEADD(day,12,10/18/2019),DATEADD(month,2,10/18/2019)SELECT DATEADD(year,1,10/18/2019)GO 下面是结果集:下面是结果集
11、:2019-10-30 00:00:00.0002019-12-18 00:00:00.000 2009-10-18 00:00:00.000 元数据函数返回有关数据库和数据库对象的信息。元数据函数返回有关数据库和数据库对象的信息。T-SQL中中的主要元数据函数见表的主要元数据函数见表12-5。【例【例17.17】返回列的长度和列的名称。返回列的长度和列的名称。USE STUMS GO SELECT COL_LENGTH(班级班级,班级名称班级名称),COL_NAME(OBJECT_ID(班级班级),1)GO 下面是结果集:下面是结果集:20 班号班号 【例【例17.18】返回数据库标识号。】
12、返回数据库标识号。USE master GO SELECT name,DB_ID(name)FROM sysdatabases ORDER BY dbid GO 例例17-18的结果集:的结果集:master1tempdb2model3msdb4pubs5Northwind6STUMS7 系统函数对系统函数对 SQL Server 中的值、对象和设置进行操作并返中的值、对象和设置进行操作并返回有关信息。回有关信息。T-SQL中的主要系统函数见表中的主要系统函数见表12-6。【例【例17.19】使用】使用 CURRENT_USER返回当前用户名。返回当前用户名。SELECT The curren
13、t user is:+convert(char(30),CURRENT_USER)下面是结果集:下面是结果集:The current user is:dbo 【例【例17.20】使用使用SYSTEM_USER返回当前系统用户名。返回当前系统用户名。DECLARE sys_usr char(30)SET sys_usr=SYSTEM_USER SELECT The current system user is:+sys_usr GO 下面是结果集:下面是结果集:The current system user is:sa 【例【例17.21】查找】查找“系部系部”表中表中“系部名称系部名称”列的长
14、度。列的长度。SELECT length=DATALENGTH(系部名称系部名称),系部名称系部名称 FROM 系部系部 ORDER BY 系部名称系部名称 GO 下面是结果集:下面是结果集:length 系部名称系部名称 6 船舶系船舶系 6 管信系管信系 6 航海系航海系 6 机电系机电系 10 交通工程系交通工程系 6 轮机系轮机系 6 艺术系艺术系 聚合函数对一组值执行计算并返回单一的值。除聚合函数对一组值执行计算并返回单一的值。除COUNT 函函数之外,聚合函数忽略空值。聚合函数经常与数之外,聚合函数忽略空值。聚合函数经常与SELECT语句的语句的GROUP BY 子句一同使用。子句
15、一同使用。T-SQL中的主要聚合函数见表中的主要聚合函数见表12-7。【例【例17.22】统计各门课程的平均成绩。】统计各门课程的平均成绩。USE STUMS GO SELECT 课程号课程号,AVG(成绩成绩)AS 平均成绩平均成绩 FROM 选课选课 GROUP BY 课程号课程号 GO 下面是结果集:下面是结果集:课程号课程号 平均成绩平均成绩 011176 030179 030788 031055 031159 070676【例【例17.23】统计选课表中的最高成绩。】统计选课表中的最高成绩。USE STUMSGOSELECT MAX(成绩成绩)AS 最高分最高分FROM 选课选课GO下面是结果集:下面是结果集:最高分最高分90【例【例17.24】统计选课表中成绩的统计标准偏差。统计选课表中成绩的统计标准偏差。USE STUMSGOSELECT STDEV(成绩成绩)FROM 选课选课GO下面是结果集:下面是结果集:13.413540804838849