前言:在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则返回0SELECT 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;否则,返回0SELECT ISDATE(‘2020-2-29’)
返回:1(有效,因为2020年2月有29天)
ISNULL使用指定的替换值替换NULLSELECT sName,ISNULL(sScore,0) FROM student
返回:将student表中sScore列中值为“NULL”的,替换为0
NULLIF如果两个指定的表达式相等,则返回空值SELECT NULLIF(‘SQL’,‘SQL’)
返回:NULL
ISNUMERIC确定表达式是否为有效的数据类型,则返回 1;否则,返回 0SELECT ISNUMERIC(3)
返回:1(int,numeric,bigint,
money,smallint,smallmoney
tinyint,float,decimal,real)
COALESCE返回其参数中第一个非空表达式SELECT COALESCE(NULL,NULL,N’A’,NULL,NULL)
返回:A
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐