任务8.3常用系统函数
函数的主要目的是返回函数计算结果值。返回值一般代表一个数据单
元或一个简单值。实际上,函数可以返回任何数据类型,包括表、游标等,可返回完整的多行结果集的类型。
SQL Server 提供了内置函数方便用户使用
常用的内置函数一般有:
1、数学函数:
如:convert( )
2、字符串函数:
如:将数值转换为字符串str( )、求串长len( )、转换为大写/小写字母upper() / lower()、截取子串left()/right()
3、日期时间函数
如: getdate( )、dateadd( )、datediff( )、datepart()
4、聚合函数
如: sum( )、avg( )、max( )、min( )、count( )
SQL Server提供了十几个聚合函数,最常用的聚合函数:
COUNT(*):用于计算所有行数
MIN(数值表达式):用于计算表达式的最小值
MAX(数值表达式):用于计算表达式的最大值
SUM(数值表达式):用于计算表达式的和
AVG(数值表达式):用于计算表达式的平均值
其他9种:计算标准偏差(STDEV)、方差(VAR)等
例: 使用聚合函数统计[教务数据库]中学生的成绩情况。
USE [教务数据库]
GO
SELECT COUNT(*) AS 课程门数,MAX(成绩) AS 最高分
数,MIN(成绩) AS 最低分数,
SUM(成绩) AS 总成绩 ,AVG(成绩) AS 平均成绩
FROM 成绩表
GROUP BY 学号
GO
例:利用聚合函数(列函数)求各门课的平均分、标准偏差。
代码:
USE [教务数据库]
GO
SELECT 课程号,AVG(成绩) AS 平均分,
STDEV(成绩) AS 标准偏差
FROM 成绩表 GROUP BY [课程号]
执行结果:
说明:从统计学的角度来看,在平均分数相同的情况下,标准偏差越大说明学生之间的录取分数差距越大。
例:计算学生表中入学录取成绩的平均分和标准偏差(一种量度数据分布的分散程度之标准,用以衡量数据值偏离算术平均值的程度)。
一 标量函数
标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。标量函数可以应用在任何一个有效的表达式中,标量函数可分为如下表所示的几大类
数值处理函数
(1)取整函数CEILING(X),不小于X的整数;CEILING (26.8)
结果为: 27;
CEILING (-26.8) 结果为: -26。v
(2)取整函数FLOOR(X ),不大于X的整数;
FLOOR(26.8)
结果为:26;
FLOOR(-26.8)
结果为:-27。
v3. 四舍五入函数v格式:ROUND(数值表达式1,数值表达式2 [,数值表达式3])
v例如,RORUD(26.8369, 3) 结果为:26.837 ;v RORUD(26.8369, 3,1) 结果为:26.836。
4.求平方根 例如,SQRT(81) 结果为:9。
5.求指数函数
(1)EXP( ) 例如,EXP(5) 结果为:148.4131591。
(2)POWER( ) 例如,POWER(5,3) 结果为:125。
6.求对数函数
例如,LOG(5) 结果为:0.5989700。
7.π函数
例如,PI( ) 结果为:3.14159265358979。
8.随机函数
例如,RAND(1) 结果为:0.713592863715925。
9.判断正负值函数
例如,SIGN(15-20/8) 结果为-1。
【例】统计字符串“数据库”的字符个数和字节个数。
SELECT LEN('数据库') AS '字符个数',DATALENGTH ('数据库') AS '字节个数'
SELECT LEN('DBS') AS '字符个数',DATALENGTH ('DBS') AS '字节个数'
例:利用随机函数,编写抽奖程序
DECLARE @x int,@y float,@Z float
SET @x=0
PRINT SPACE(6)+'学号 RAND(x) 抽奖号 奖金数'
PRINT REPLICATE('-',40)
WHILE @x<10 --当@x>=10时终止循环
BEGIN
SET @x=@x+1
SET @y=RAND(@x) --随机函数RAND(X) 取整函数FLOOR(X),CEILING(X)
SET @Z=RAND(@Y)
PRINT STR(201900+@X)+' '+STR(@Y,9,8)+STR(FLOOR(100000*@y),8,0)+STR(CEILING(1000000*@Y*@Z)-673000)
PRINT REPLICATE('-',40)
END