880 likes | 992 Views
第六章 使用函数辅助查询. 6.1 数学函数 6.2 字符串函数 6.3 日期函数 6.4 转换函数 6.5 判定函数 6.6 用户自定义函数. 6.1 数学函数. 1 、 ABS(numeric_expression) 该函数返回表达式值( bit 型除外) 的绝对值,返回值的数据类型与原数 据类型一致。例如: SELECT ABS(-3.0), ABS(2.0), ABS(0.0) . 该语句执行后在查询窗口的结果子窗 口中,点击网格标签将看到以下返回 结果: 3.0 2.0 .0 点击消息标签将看到以下消息:
E N D
第六章 使用函数辅助查询 6.1数学函数 6.2字符串函数 6.3日期函数 6.4转换函数 6.5判定函数 6.6用户自定义函数
6.1数学函数 1、ABS(numeric_expression) 该函数返回表达式值(bit型除外) 的绝对值,返回值的数据类型与原数 据类型一致。例如: SELECT ABS(-3.0), ABS(2.0), ABS(0.0)
该语句执行后在查询窗口的结果子窗 口中,点击网格标签将看到以下返回 结果: 3.0 2.0 .0 点击消息标签将看到以下消息: /*----SELECT ABS(-3.0), ABS(2.0), ABS(0.0)--*/
(所影响的行数为 1 行,所影响的 行数指输出结果的行数。) 2、AVG([ALL | DISTINCT]numeric_expression) 该函数返回查询出的一组数据的 平均值。例如: SELECT AVG(积分)
FROM jsy WHERE 所学专业='汽车指挥' 返回结果为:26.833333 3、COUNT([ALL | DISTINCT]expression | * ) 该函数返回查询出的表达式数 据的个数。例如:
SELECT COUNT(*) FROM cl WHERE 类别=‘小轿车’ 返回结果为:3 4、CEILING(numeric_expression) 该函数返回最小的大于或等于表 达式值的整数值。返回值的数据类型
与原数据类型一致。例如: SELECT CEILING($99.99), CEILING($-99.99) ,CEILING($0.0) 返回结果为:100.0000 -99.0000 .0000 5、FLOOR(numeric_expression) 该函数返回最大的小于或等于表
达式值的整数值。返回值的数据类型 与原数据类型一致。例如: SELECT FLOOR($99.99), FLOOR($-99.99) ,FLOOR($0.0) 返回结果为:99.0000 -100.0000 .0000 6、RAND([integer_expression])
该函数返回一个位于0与1之间 的随机数。表达式值作为产生随机数 的起始值,返回值为浮点型数。例 如: DECLARE @number smallint SET @number=1 WHILE (@number<=3)
BEGIN SELECT RAND(@number) SET @number=@number+1 END GO
返回结果为 0.71359199321292355 0.7136106261841817 0.71362925915543995 7、ROUND(numeric_expression,int_ expression1,
[integer_expression2]) 该函数无整数表达式2时,返回 由整数表达式1表示的精度对数值型 表达进行四舍五入后的值;有整数 表达式2(非零)时,表示用整数表 达式1表示的精度对数值型表达式进 行截断。例如:
SELECT ROUND(2456.12582,3) 返回结果为2456.12600。下面语 句: SELECT ROUND(2456.12582,3,1) 返回值为2456.12500。
下面语句: SELECT ROUND(2456.12582,-3) 返回值为2000.00000。
6.2字符串函数 1、ASCII(chracter_expression) 该函数返回字符的ASCII码值, 返回值为整型数据。例如: SELECT ASCII(‘a’), ASCII(‘Z’) 返回结果为:97 90 2、CHAR(inter_expression)
该函数返回ASCII码值代表的字 符。例如: SELECT CHAR(97), ASCII(90) 返回结果为:a Z 3、LEN(charater_expression) 该函数返回字符串的长度,即字 符的个数,1个汉字计为一个字符。
例如: SELECT LEN(姓名) FROM jsy WHERE 驾照号=‘002011’ 返回结果为:2 该例计算驾照号为‘002011’的驾驶员 的姓名字段值的长度,注意LEN函数
计算字符长度时不包括字符尾部的空 格。 4、DATALENGTH(expression) 该函数返回表达式值所占用的字 节数,常用于查看变长数据类型的长 度。例如: SELECT
DATALENGTH(‘100’),DATALENGTH(100) 返回结果为:3 4 而下面语句: SELECT DATALENGTH(姓名) FROM jsy
WHERE 驾照号='002011' 返回结果为:4 这是因为‘100’为字符,长度为3 字节,100为数值,数据类型默认为 int型,占用为4字节。表jsy中驾照 号为‘002011’的驾驶员姓名列的长度 为4字节。
5、LEFT(chracter_expression,integer_expression) 该函数返回字符串从左边开始指 定个数的字符。 例如: SELECT LEFT(姓名,)+LEFT
(职务,3) FROM ddy 返回结果为: 林队长 孙副队长 刘调度员 6、RIGHT(chracter_expression, integer_expression)
该函数返回字符串从右边开始指 定个数的字符。 例如: SELECT RIGHT(驾照号,4), 姓名 FROM jsy WHERE 籍贯= ‘北京’ 返回结果为: 姓名
2012 高兵 0114 林水强 7、SUBSTRING(chracter_expression, begin_integer_expression, lenth_integer_expression ) 该函数返回字符串在起始位置开
始的指定长度的子串。例如: SELECT SUBSTRING('traffic',3,4) 返回结果为:affi 8、UPPER(chracter_expression) 该函数返回字符的大写形式。 9、LOWER(chracter_expression) 该函数返回字符的小写形式。
10、SPACE(integer_expression) 该函数返回指定长度的空格字符 串。例如: SELECT 姓名+SPACE(6)+职务 FROM ddy WHERE 调度号=’0111’ 返回结果为:林强 队长
11、REPLICATE(chracter_expressio n,integer_expression) 该函数将字符串复制指定的遍 数。例如: SELECT REPLICATE(‘SQL’,3) 返回结果为:SQLSQLSQL
12、STUFF(chracter_expression1, begin_integer_expression, end_integer_expression, chracter_expression2) 该函数将字符串1从开始位置到 结束位置中的字符删去然后将字符串 2填充进去。例如:
SELECT STUFF(‘SQlver’,2,2, ‘L Ser’) 返回结果为:SQL Server 13、REVERSE(chracter_expression) 该函数返回字符串的反序字符 串。例如:
SELECT REVERSE(‘SQL’) 返回结果为:LQS 14、LTRIM(chracter_expression) 该函数返回删除字符串左端空格 后的字符串。例如: SELECT LEN(‘SQL‘) AS ‘原字符长’, LEN(LTRIM(‘SQL‘)) AS ‘
现字符长’ 返回结果为:原字符长 现字符长 6 3 15、RTRIM(chracter_expression) 该函数返回删除字符串右端空格 后的字符串。例如: SELECT
'SQL',RTRIM('SQL'),'SQL' 返回结果为:SQL SQL SQL 16、STR(float_expression[, integer_expression1[, integer_expression2]]) 该函数返回浮点表达式值的字符
串形式。整数表达式1为字符串长 度,整数表达式2为小数位数。若无 整数表达式2,默认为0;若无整数 表达式1,默认为浮点数值的整数部 分长度。例如: SELECT STR(123.456), STR(123.456,4,1),STR(123.456,6,4) 返回结果为:123 123 123.46
6.3日期串函数 1、GETDATE() 该函数返回当前系统日期时间。 例如: SELECT GETDATE() 返回结果:2003-05-27 02:56:33.120
2、DATEPART(datepart,date_expression) 该函数返回日期表达式值的指定 部分,返回值为数值型数据。表6-1 为date型数据日期部分的取值。
例如: SELECT 姓名, DATEPART(yy, 出 生年月) AS’出生年’, DATEPART(mm, 出生年月) AS ‘出 生月’ FROM jsy WHERE 驾照号=’002011’
返回结果:姓名 出生年 出生月 王明 1983 12 3、DATENAME(datepart,date_expres sion) 该函数返回日期表达式值的指定 部分的名称,返回值为字符型数据。
例如: SELECT 姓名, DATENAME(ww, GETDATE()) 返回结果:Turday 4、DATEADD(datepart, interge_expression, date_expression )
该函数返回日期表达式值的指定 部分加上整数表达式值后的日期时 间。例如: SELECT DATEADD(day, 10, GETDATE()) 返回结果:2004-01-04 12:41:51.560
5、DATEDIFF(datepart,date_expre ssion1, date_expression2) 该函数返回日期表达式1的值和 日期表达式2的值在指定部分的差 值。例如: SELECT 姓名,
DATEDIFF(year, 出生年 月,GETDATE()) AS ‘年龄’ FROM jsy WHERE 驾照号=’002011’ 返回结果:姓名 年龄 王明 20 6、DAY(date_expression)
该函数返回日期表达式值的“日” 部分。例如: SELECT DAY(GETDATE()) 返回结果:4 7、MONTH(date_expression) 该函数返回日期表达式值的“月” 部分。例如:
SELECT MONTH(GETDATE()) 返回结果:1 8、YEAR(date_expression) 该函数返回日期表达式值的“年” 部分。例如: SELECT YEAR(GETDATE()) 返回结果:2004
6.4转换串函数 1、CAST(expression, AS date_type) 将表达式值转换为指定的数据类 型。例如: SELECT CAST('2002-5-27' AS datetime)
返回结果:2002-05-27 00:00:00.000 语句 SELECT CAST(GETDATE() AS char) 返回结果为:12 25 2003 12:47PM 语句
SELECT CAST('123' AS real) 返回结果为:123.0 再如,车辆表中启用年代字段的 数据由两部分组成如‘89_2’,其中 ‘89’表示89年,‘2’表示第二季度。现 需将‘89_2’形式用‘89年’表示,下面 语句可实现该数据转换。
SELECT 车牌号, 类别,‘启用年 '=CAST(LEFT(启用年代, 2) AS char(2))+'年' FROM cl 2、CONVERT(date_type[(length)], expression[,style]) 与CAST函数相似,只是CONVERT
中可以设定数据类型的长度和格式。 表6-2列出日期型与字符型转换时 style的取值含义。 例如语句 SELECTCONVERT(char, GETDATE(),101) 返回结果:12/25/2003