前言:在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。SQL Server包含多种不同的函数用以完成各种工作,每一个函数都有一个名称,在名称之后有一对小括号,如:GETDATE()。大部分的函数在小括号中需要一个或多个参数。
常用的几类函数:
-
转换函数
用来实现数据类型之间的转换
-
字符串函数
用于控制返回给用户的字符串
-
日期函数
用于操作日期值
-
数学函数
用于对数值进行代数运算
-
系统函数
获取有关SQL Server中对象和设置的系统信息
-
其他函数
SQL Server中其他常用的函数
一、转换函数
函数名 | 描 述 | 示 例 |
---|---|---|
CAST | 将一种数据类型的表达式转换为另一种数据类型的表达式 | SELECT CAST(12345 AS VARCHAR(5)) 返回:字符串12345 |
CONVERT | 将一种数据类型的表达式转换为另一种数据类型的表达式 | SELECT CONVERT(VARCHAR(5),12345) 返回:字符串12345 |
二、字符串函数
函数名 | 描 述 | 示 例 |
---|---|---|
CHARINDEX | 寻找一个指定的字符串在另一个字符串中的起始位置 | SELECT CHARINDEX(‘Server’,‘SQL Server课程’,1) 返回:5 |
DATALENGTH | 返回用来表示任何表达式的字节数 | SELECT DATALENGTH(‘SQL Server’) 返回:10 |
LEN | 返回传递给它的字符串长度 | SELECT LEN(‘SQL Server课程’) 返回:12 |
UPPER | 把传递给它的字符串转换为大写 | SELECT UPPER(‘sql server课程’) 返回:SQL SERVER课程 |
LOWER | 把传递给它的字符串转换为小写 | SELECT LOWER(‘SQL SERVER课程’) 返回:sql server课程 |
LTRIM | 清除字符左边的空格 | SELECT LTRIM(’ 数据库 ') 返回:数据库 (后面的空格保留) |
RTRIM | 清除字符右边的空格 | SELECT RTRIM(’ 数据库 ') 返回: 数据库 (前面的空格保留) |
LEFT | 从字符串左边返回指定数目的字符 | SELECT LEFT(‘SQL Server课程’,3) 返回:SQL |
RIGHT | 从字符串右边返回指定数目的字符 | SELECT RIGHT(‘SQL Server课程’,2) 返回:课程 |
SUBSTRING | 从字符串中间返回指定数目的字符 | SELECT SUBSTRING(‘SQL Server课程’,5,6) 返回:Server |
REPLACE | 替换一个字符串中的字符 | SELECT REPLACE(‘SQL Server课程’,‘课程’,‘数据库’) 返回:SQL Server数据库 |
REVERSE | 按相反顺序返回字符串表达式 | SELECT REVERSE(‘SQL Server课程’) 返回:程课revreS LQS |
STUFF | 在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串 | SELECT STUFF(‘MySQL课程’,1,2,‘我的’) 返回:我的SQL课程 |
SPACE | 返回由重复的空格组成的字符串 | SELECT SPACE(5) 返回:返回5个空格 |
REPLICATE | 返回多次复制后的字符表达式 | SELECT REPLICATE(’+’,3) 返回:+++ |
PATINDEX | 返回指定表达式中某模式第一次出现的起始位置 | SELECT PATINDEX(’%数据%’,‘MySQL数据库入门’) 返回:6 |
STR | 返回由数字数据转换来的字符数据 | SELECT STR(123.45,6,1) 返回:123.5 |
CHAR | 将int ASCII代码转换为字符 | SELECT CHAR(65) 返回:A |
三、日期函数
函数名 | 描 述 | 示 例 |
---|---|---|
GETDATE | 取得当前的系统函数 | SELECT GETDATE() 返回:今天的日期 |
DATEADD | 将指定的数值添加到指定的日期部分后的日期 | SELECT DATEADD(mm,4,‘2020-5-6’) 返回:2020-9-6 |
DATEDIFF | 两个日期之间的指定日期部分的间隔 | SELECT DATEDIFF(mm,‘2019-3-25’,‘2020-5-6’) 返回:14 |
DATENAME | 日期中指定日期部分的字符串形式 | SELECT DATENAME(dw,‘2020-5-6’) 返回:星期三 |
DATEPART | 日期中指定日期部分的整数形式 | SELECT DATEPART(yy,‘2020-5-6’) 返回:2020 |
DAY、MONTH、YEAR | 返回一个整数 | SELECT MONTH(GETDATE()) 返回:5 |
四、数学函数
函数名 | 描 述 | 示 例 |
---|---|---|
RAND | 返回从0到1之间的随机float值 | SELECT RAND() 返回:0.9857313976146 |
ABS | 返回数值表达式的绝对值 | SELECT ABS(-45) 返回:45 |
ASCII | 返回字符表达式中最左侧的字符的ASCII代码值 | SELECT ASCII(‘a’) 返回:97 |
CEILING | 返回大于或等于指定数值、表达式的最小整数 | SELECT CEILING(43.5) 返回:44 |
FLOOR | 返回小于或等于指定表达式的最大整数 | SELECT FLOOR(43.5) 返回:43 |
PI | 返回PI的常量值 | SELECT PI() 返回:3.14159265358979 |
POWER | 返回数值表达式的幂值 | SELECT POWER(5,2) 返回:25 |
SQUARE | 返回指定浮点值的平方 | SELECT SQUARE(2.3) 返回:5.29 |
ROUND | 将数值表达式四舍五入为指定精度 | SELECT ROUND(43.543,1) 返回:43.500 |
SIGN | 对于正数返回+1,对于负数返回-1,对于0则返回0 | SELECT SIGN(-43) 返回:-1 |
SQRT | 返回浮点表达式的平方根 | SELECT SQRT(9) 返回:3 |
五、系统函数
函数名 | 描 述 | 示 例 |
---|---|---|
CONVERT | 用来转变数据类型 | SELECT CONVERT(VARCHAR(5),12345) 返回:字符串12345 |
CURRENT_USER | 返回当前用户的名称 | SELECT CURRENT_USER 返回:你登录的用户名 |
DATALENGTH | 返回用于指定表达式的字节数 | SELECT DATALENGTH(‘SQL Server课程’) 返回:14 |
HOST_NAME | 返回当前用户所登录的计算机名字 | SELECT HOST_NAME() 返回:你所登录的计算机的名字 |
SYSTEM_USER | 返回当前所登录的用户名称 | SELECT SYSTEM_USER 返回:你当前所登录的用户名 |
USER_NAME | 从给定的用户ID返回用户名 | SELECT USER_NAME(1) 返回:从任意数据库中返回“dbo” |
六、其他函数
函数名 | 描 述 | 示 例 |
---|---|---|
ISDATE | 判断有效日期或时间值,则返回1;否则,返回0 | SELECT ISDATE(‘2020-2-29’) 返回:1(有效,因为2020年2月有29天) |
ISNULL | 使用指定的替换值替换NULL | SELECT sName,ISNULL(sScore,0) FROM student 返回:将student表中sScore列中值为“NULL”的,替换为0 |
NULLIF | 如果两个指定的表达式相等,则返回空值 | SELECT NULLIF(‘SQL’,‘SQL’) 返回:NULL |
ISNUMERIC | 确定表达式是否为有效的数据类型,则返回 1;否则,返回 0 | SELECT ISNUMERIC(3) 返回:1(int,numeric,bigint, money,smallint,smallmoney tinyint,float,decimal,real) |
COALESCE | 返回其参数中第一个非空表达式 | SELECT COALESCE(NULL,NULL,N’A’,NULL,NULL) 返回:A |