聚合函数

函数名 功能
AVG([ALL|DISTINCT] 表达式) 返回一组值的平均数,忽略空值
COUNT({[ALL|DISTINCT]} 表达式]|*) 返回组中项数,返回值为INT类型
MAX([ALL|DISTINCT] 表达式) 返回表达式中最大值
MIN([ALL|DISTINCT] 表达式) 返回表达式中最小值
SUM([ALL|DISTINCT] 表达式) 返回表达式中的和,SUM只能用于数字,空值将被忽略

ALL:对所有值进行聚合函数,默认就是ALL DISTINCT:去重 聚合函数只能在以下位置作为表达式使用,SELECT语句的选择列表(子查询或者外部查询)中,COMPUTE BY子句中,HAVING子句中

数学函数

函数名 功能
FLOOR(数值表达式) 向下取整
CEILING(数值表达式) 向上取整

字符串函数

函数名 功能
ASCII(字符表达式) 返回最左侧字符的ASCII码值
CHAR(整型表达式) 将整型ASCII码值转换为字符
LEFT(字符表达式,整数) 截取从左边开始指定个数的字符串
RIGHT(字符表达式,整数) 截取从右边开始指定个数的字符串
SUBSTRING(字符表达式,起始点,n) 截取从起始点开始的n个字符
CHARINDEX(字符表达式1,字符表达式2,[开始位置]) 从指定开始位置起,搜索字符串表达式1在字符串表达式2中的位置,省略开始位置表示从字符串表达式2的开头开始搜索
LTRIM(字符表达式) 去掉左边的空格
RTRIM(字符表达式) 去掉右边的空格
REPLICATE(字符表达式,n) 重复字符串n遍
REVERSE(字符表达式) 反转字符串
STR(数字表达式) 数值转换成字符串
LEN(字符表达式) 返回字符个数不包括尾随空格
replace(列名,'要替换的','被替换的') 替换某列中的某个字符串

日期和时间函数

函数名 功能
GETDATE() 返回系统当前日期和时间
DAY(日期) 返回指定日期的 日
MONTH(日期) 返回指定日期的 月
YEAR(日期) 返回指定日期的 年
DATEPART(DATEpart,日期) 返回指定日期的指定DATEpart的整数
DATENAME(DATEpart,日期) 返回指定日期的指定DATEpart的字符串
DATEDIFF(DATEpart,日期1,日期2) 返回两个日期相隔了多少个指定的DATEpart所指的时间,比如相隔了多少天,多少月,多少年等
DATEADD(DATEpart,数值,日期) 将数值加到日期的指定DATEpart上,返回一个新的DATETIME类型的数据,比如加8年,加20天,加30月

例子

  1. SELECT DATEDIFF(yy,'2017-01-28','2021-12-18'),DATEADD(d,20,'2021-12-18')

image.png

DATEpart

用于指定要返回日期的组成部分

日期和时间部分 DATEpart缩写
year yy,yyyy
quarter qq,q
month mm,m
dayofyear dy,y
day dd,d
week wk,ww
weekday dw,w
hour hh
minute mi,n
second ss,s

数据类型转换函数

需要转换数据类型时,用两个函数,CAST或者CONVERT函数进行类型转换

  1. CAST(<表达式> AS <目标数据类型>)
  2. CONVERT(<目标数据类型>,<表达式> [,<日期样式>])

日期样式

年两位数yy 年4位数yyyy 输入/输出格式
0或者100 mm dd yyyy hh:miAM(或者PM)
1 101 mm/dd/yyyy
2 102 yy.mm.dd
3 103 dd/mm/yyyy
4 104 dd.mm.yy
5 105 dd-mm-yy
6 106 dd mm yy
7 107 mm dd, yy
8 108 hh:mi:ss

元数据函数

元数据函数返回有关数据库和数据库对象的信息,所以元数据函数具有不确定性

函数名 功能
COL_LENGTH(表名,列名) 返回列定义的长度(以字节为单位)
COL_SNAME(表标识号,列标识号) 根据指定的表标识号和列标识号返回列的名称
DB_SNO([数据库标识号]) 返回数据库的标识(SNO)号
DB_SNAME([数据库的名称]) 返回数据库名字
OBJECT_SNO(对象名,[对象类型]) 返回架构范围内对象的数据库对象标识号

用户自定义函数

用户自定义函数是有一个或者多个T-SQL语句组成的子程序,它由函数名,参数,编程语句和返回值组成。用户自定义函数只能通过返回值返回数据。可以出现在SELECT语句中。
SQL Server用户自定义函数分为两种类型,即标量值函数和表值函数。

  1. 标量值函数使用RETURN语句返回单个数据值,返回类型可以是除了TEXT,NTEXT,IMAGE,CURSOR和TIMESTAMP外的任何数据类型。
  2. 表函数返回TABLE数据类型

表值函数又分为内连表值函数和多语句表值函数。

  1. 内连表值函数没有函数主体,返回的表值是单个SELECT语句的结果集
  2. 多语句表值函数指在BEGIN…..END之前定义函数主体,其中包含一些列的T-SQL语句这些语句可以生成并将其插入返回的表中

创建标量值函数

形参是变量,变量要加@符号

  1. CREATE FUNCTION <函数名称>(<形参> AS <数据类型> [,...n])
  2. RETURN <返回的数据类型>
  3. AS
  4. BEGIN
  5. 函数主体
  6. RETURN 表达式
  7. END

创建内连表值函数

  1. CREATE FUNCTION <函数名称>(<形参> AS <数据类型> [,...n])
  2. RETURN TABLE
  3. AS
  4. RETURN <查询语句>

创建多语句表值函数

表变量名也是变量,要加@符号

  1. CREATE FUNCTION <函数名称>(<形参> AS <数据类型> [,...n])
  2. RETURN <表变量名> TABLE
  3. AS
  4. BEGIN
  5. <SQL语句块>
  6. RETURN
  7. END