当前位置:文档之家› 一些常用的系统函数

一些常用的系统函数

附录B 一些常用的系统函数SQL Server 2008提供了许多内置函数,使用这些函数可以方便快捷地执行某些操作。

这些函数通常用在查询语句中,一般来说,允许使用变量、字段或表达式的地方都可以使用这些内置函数。

本附录将介绍一些比较常用的日期函数、字符串函数和类型转换函数。

B.1日期函数日期和时间函数对日期和时间类型的数据执行操作,并返回一个字符串、数字值或日期和时间值。

1. GETDATE作用:按 datetime 值的SQL Server 标准内部格式返回当前的系统日期和时间。

返回类型:datetime。

说明:日期函数可用在 SELECT 语句的选择列表或用在查询语句的 WHERE 子句中。

例1. 用 GETDATE 返回系统当前的日期和时间。

SELECT GETDATE()例2. 在CREATE TABLE语句中使用 GETDATE函数作为列的默认值,这样可简化用户对业务发生日期和时间的输入。

此示例创建Employees 表,用 GETDATE函数的返回值作为员工参加工作的默认报到时间。

CREATE TABLE Employees(eid char(11) NOT NULL,ename char(10) NOT NULL,hire_date datetime DEFAULT GETDATE())2.DATEADD作用:对给定的日期加上一段时间,返回新的 datetime 值。

语法: DATEADD( datepart, number, date )其中:Datepart:是与 number 相加的date部分。

表B.1列出了有效的 datepart 参数。

表B.1 SQL Server识别的日期部分和缩写形式●Number:是一个整数或表达式,是与 date 的 datepart 相加的值。

●date:是返回datetime或smalldatetime值或日期格式字符串的表达式。

返回类型:返回datetime,但如果date参数是smalldatetime,则返回smalldatetime。

例3.计算当前日期加上100天后的日期。

SELECT DATEADD(DAY,100,GETDATE())3.DATEDIFF作用:返回两个指定日期之间所差的日期。

语法:DATEDIFF( datepart, startdate, enddate )其中datepart的取值如表B.1所示。

返回类型:int说明:返回结果是用结束日期(enddate)减去开始日期(startdate)。

如果开始日期比结束日期晚,则返回负值。

例4.计算2015年5月1日到2015年10月1日之间的天数。

SELECT DATEDIFF( DAY,'2015/5/1', '2015/10/1' )4.DATENAME作用:返回代表指定日期的指定日期部分的字符串描述。

语法:DATENAME( datepart, date )其中datepart的取值如表B.1所示。

返回类型:nvarchar说明:SQL Server 自动在字符和datetime值间按需要进行转换。

例5.得到系统当前日期中得到月份。

SELECT DATENAME (month, GETDATE()) AS 'Current month'5.DATEPART作用:返回代表给定日期的指定日期部分的整数。

语法:DATEPART( datepart, date )datepart的取值如表B.1所示。

返回类型:int例6. 得到系统当前日期中得到年份。

SELECT DATEPART (year, GETDATE()) AS 'Current year'6.DAY作用:返回指定日期的日部分的整数。

语法:DAY( date )返回类型:int说明:此函数等价于DATEPART( day, date )。

例10.返回当前日期的日部分。

SELECT DAY(getdate()) AS 'Day Number'7.MONTH作用:返回指定日期的月份的整数。

语法:MONTH ( date )返回类型:int说明:此函数等价于 DATEPART( month, date )。

8.YEAR作用:返回指定日期中的年份的整数。

语法:YEAR ( date )返回类型:int说明:此函数等价于 DATEPART( year, date )。

B.2 字符串函数字符串函数用于对字符数据进行操作,返回字符串或数字值。

1.LEFT作用:返回从字符串左边开始指定个数的字符串。

语法:LEFT ( character_expression , integer_expression )其中:●character_expression:字符串数据,可以是常量、变量或列名。

●integer_expression:正整数,指定character_expression 将返回的字符个数。

如果integer_expression为负,则将返回错误。

返回类型:●当 character_expression 为非Unicode字符类型时,返回varchar。

●当 character_expression 为Unicode 字符类型时,返回nvarchar。

例1.返回字符串“abcdefg”最左边的 2 个字符。

SELECT LEFT('abcdefg', 2)执行结果为:ab例2.对Student表,查询所有不同的姓氏(假设没有复姓)。

SELECT DISTINCT LEFT(Sname,1) AS 姓氏 FROM Student执行结果如图B-1所示。

图B-1 例2的执行结果2.RIGHT作用:返回字符串中从右边开始指定个数的字符串。

语法:RIGHT ( character_expression, integer_expression ) 各参数含义及返回类型同LEFT。

例3.返回字符串“abcdefg”最右边的 2 个字符。

SELECT RIGHT ('abcdefg', 2)执行结果为:fg3.LEN作用:返回给定字符串中字符(不是字节)的个数,其中不包含尾随空格。

语法:LEN( string_expression )返回类型:如果string_expression 的类型为varchar(max)、nvarchar(max)或 varbinary(max),则为 bigint ;否则为 int 。

例4. 返回字符串“数据库系统基础”的字符个数。

SELECT LEN('数据库系统基础') 结果为:7例5.对Student 表,统计名字为2个汉字和3个汉字的学生人数。

SELECT LEN(Sname) AS 人名长度, COUNT(*) AS 人数 FROM Student WHERE LEN(Sname) IN (2,3) GROUP BY LEN(Sname)执行结果如图B-2所示。

4.SUBSTRING作用:返回字符串中的指定部分。

语法:SUBSTRING ( value_expression ,start_expression , length_expression ) 其中:● value_expression :字符串数据,可以是常量、变量或列名。

● start_expression :指定返回字符串的起始位置的整数。

如果 start_expression 小于 0,则生成错误并终止语句。

如果 start_expression 大于字符串中的字符个数,将返回一个零长度的表达式。

● length_expression :指定要返回的value_expression 中的字符个数。

如果length_expression 小于0,则生成错误并终止语句。

如果start_expression 与length_expression 的总和大于value_expression 中的字符个数,则返回start_expression 后边的整个字符串。

返回类型:字符串数据。

例6.返回名字的第二个字是“小”或“大”的学生姓名。

SELECT Sname FROM StudentWHERE SUBSTRING(Sname,2,1) IN ('小', '大') 执行结果如图B-3所示。

5.LTRIM作用:删除字符串左边的起始空格。

语法:LTRIM ( character_expression ) 返回类型:varchar 或 nvarchar 。

6.RTRIM作用:截断字符串右边的所有尾随空格。

语法:RTRIM ( character_expression ) 返回类型:varchar 或 nvarchar 。

例7.查询姓“王”且名字是3个字的学生姓名。

SELECT Sname FROM StudentWHERE Sname LIKE '王%' AND LEN(RTRIM(Sname)) = 3图B-2 例5的执行结果图B-3 例6的执行结果B.3 类型转换函数类型转换函数是将某种数据类型的表达式显式转换为另一种数据类型。

SQL Server 2008提供了两个类型转换函数:CAST 和 CONVERT,这两个函数提供了相似的功能。

我们这里只介绍CAST 函数语法:CAST函数的语法格式:CAST ( expression AS data_type [ ( length ) ] )其中:●expression:任何有效的表达式。

●data_type:目标数据类型。

不能使用别名数据类型。

●Length:指定目标数据类型长度的可选整数。

默认值为 30。

返回类型:返回转换为 data_type 的 expression。

例1.对SC表,计算每个学生的考试平均成绩,将平均成绩转换为小数点前3位,小数点后2位的定点小数。

SELECT Sno AS 学号,CAST(AVG(CAST(Grade AS real)) AS numeric(5,2)) AS 平均成绩FROM SC GROUP BY Sno执行结果如图B-4所示:图B-4 例1的执行结果注:默认情况下,AVG函数返回结果的类型与进行统计的列的数据类型相同,由于Grade是int型的,因此,若不进行类型转换,则AVG函数返回的结果就是整型的。

相关主题