SQL数据库语言基础之SqlServer系统函数、聚合集合函数【大总结】

1、聚合函数

(1)聚合函数的概念
它是系统函数中最常用的一类函数,主要是对一组值进行计算,然后返回一个值。聚合函数主要包括SUM(求和函数)、AVG(求平均值函数)、MIN(求最小值函数)、MAX(求最大值函数)、COUNT(求数量的函数)

(2)COUNT求个数
用于计算满足条件的数据项数,返回int数据类型的值。
表达式:COUNT( {[[ all | distinct] expression ] | * } )
这里的表达式是除text、image或ntext以外任何数据类型的表达式,但不允许使用聚合函数和子查询。

其他用法:

  • count(*) 或 count(1): 返回所有的项数,包括null值和重复项。而除了此情况外,其他任何形式的count()函数都会忽略Null行。除了此情况外,其他任何聚合函数都会忽略NULL值,也就是说,AVG()参数里的值如果为Null则这一行会被忽略如计算平均值,这点要注意。
  • count(all 表达式):返回非空的项数。
  • count(distinct 表达式):返回唯一非空的项数

(3)SUM求和
只能用于精确或近似数字类型列(bit类型除外)的求和,忽略null值,不允许使用聚合函数和子查询。
语法结构:SUM( [ all | distinct ] expression )

(4)MAX求最大值
忽略null值。max函数可以使用于numeric、char、varchar、money、smallmoney、或datetime列,但不能用于bit列。不允许使用聚合函数和子查询。
语法结构:MAX( [ all | distinct ] expression )

(5)MIN求最小值
用于计算最小值,MIN函数可以适用于numeric、char、varchar或datetime、money或smallmoney列,但不能用于bit列。不允许使用聚合函数和子查询,忽略null值。
语法结构:MIN( [ all | distinct ] expression )

(6)AVG求平均值
用于计算精确型或近似型数据类型的平均值,bit类型除外,忽略null值。AVG函数计算时将计算一组数的总和,然后除以不为null的个数,得到平均值。
语法结构:AVG( [ all | distinct ] expression )
注意:

  • all:为默认值,表示对所用的数据都计算平均值。
  • distinct:每个值的唯一值计算平均值,不管相同的值出现多次,多个行相同的值仅仅出现一次作为计算。
  • expression:精确或近似值的表达式。表达式内部不允许使用子查询和其他聚合函数。

(7)求方差VAR、VARP
计算指定表达式中所有值的方差。
语法结构:VAR( [ all | distinct ] expression )

这里的expression表达式必须是一个数值表达式,不允许使用聚合函数和子查询。表达式的值是精确或近似数值类型,但不包括bit数据类型,将忽略null值。

VARP :求总体方差

(8)求标准偏差STDEV、STDEVP
语法结构:STDEV( [all | distinct ] expression )
这里的expression必须是一个数值表达式,不允许使用聚合函数和子查询。表达式的值是精确或近似数值类型,但不包括bit数据类型。将忽略null值。

STDEVP :求总体标准偏差

(9)CHECKSUM_AGG求校验和(集合函数)
返回组中各值的校验和。 将忽略 Null 值。CHECKSUM_AGG 可用于检测表中的更改。表中行的顺序不影响 CHECKSUM_AGG 的结果。此外,CHECKSUM_AGG 函数还可与 DISTINCT 关键字和 GROUP BY 子句一起使用。如果表达式列表中的某个值发生更改,则列表的校验和通常也会更改。但只在极少数情况下,校验值会保持不变。
语法结构:CHECKSUM_AGG ( [ ALL | DISTINCT ] expression )

(10)COUNT_BIG求个数
返回组中的项数。 COUNT_BIG 的用法与 COUNT 函数类似。 两个函数唯一的差别是它们的返回值。 COUNT_BIG 始终返回 bigint 数据类型值。 COUNT 始终返回 int 数据类型值。

GROUPING:用于测试 cube 或 rollup 空值

(11)聚合函数使用位置

  • elect 语句的选择列表(子查询或外部查询)。
  • compute 或 compute by 子句。
  • having 子句。

2、类型转换函数

(1)CONVERT()
CONVERT(数据类型, 要转换的数据源表达式, 要转换的日期格式)

  • 日期格式:
    0:月.日.年.时:分(MON, DD, YY, HH, MI)
    101:月/日/年
    102:年.月.日
    103:日/月/年
    获取当前时间:GETDATE()函数
SELECT CONVERT(char, GETDATE())
SELECT CONVERT(char, GETDATE(),101)

1.2.1

(2)CAST()
这个转化函数没有丰富的日期转换,因此常用于其他类型转换,而日期则用CONVERT()函数。
表达式:CAST(数据源 AS 数据类型)

  • 转换当前日期格式为字符串:
SELECT CAST(GETDATE() AS CHAR(10))

3、日期函数

函数 作用
GETDATE() 获取当前系统时间
DATEADD(datepart, number, date) 在指定日期上增加年月日,返回日期型数据
DATEDIFF(datepart, date1, date2) 获取两个日期的差,并返回数据差值
DATENAME(datepart, date) 获取日期的一部分,并以字符串的形式返回
DATEPART(datepart, date) 获取日期的一部分,返回整数形式

datepart:month,year,day,quarter,week,hour,minute,second

  • 测试练习:
--增加3年
SELECT DATEADD(YEAR,3,GETDATE())
--获取年这一部分的数据
SELECT DATENAME(YEAR,GETDATE())
SELECT DATEPART(YEAR,GETDATE())

1.3.1

4、数学函数

1.4.1

5、字符函数

(1)字符转换函数
1)ASCII():
返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。

2)CHAR():
将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。

3)LOWER()和UPPER():
LOWER()将字符串全部转为小写;
UPPER()将字符串全部转为大写。

4)STR():
把数值型数据转换为字符型数据。
结构:STR (<float_expression>[,length[, <decimal>]])
length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。

当length 或者decimal 为负值时,返回NULL;当length 小于小数点左边(包括符号位)的位数时,返回length 个*;先服从length ,再取decimal ;
当返回的字符串位数小于length ,左边补足空格。

(2)去空格函数
LTRIM() :把字符串头部的空格去掉。

RTRIM() :把字符串尾部的空格去掉。

(3)取子串函数
1)left():
LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 个字符。

2)RIGHT():
结构:RIGHT (<character_expression>, <integer_expression>)
返回character_expression 右起 integer_expression 个字符。

3)SUBSTRING():
结构:SUBSTRING (<expression>, <starting_ position>, length)
返回从字符串左边第starting_ position 个字符起length个字符的部分。

(4)字符串比较函数
1)CHARINDEX():
返回字符串中某个指定的子串出现的开始位置。
结构:CHARINDEX (<’substring_expression’>, <expression>)

其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。此函数不能用于TEXT 和IMAGE 数据类型。

2)PATINDEX():
返回字符串中某个指定的子串出现的开始位置。
结构:PATINDEX (<’%substring _expression%’>, <column_ name>)

其中子串表达式前后必须有百分号“%”否则返回值为0。与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。

(5)字符串操作函数
1)QUOTENAME():
返回被特定字符括起来的字符串。
结构:QUOTENAME (<’character_expression’>[, quote_ character])
其中quote_ character 标明括字符串所用的字符,缺省值为“[]”。

2)REPLICATE():
返回一个重复character_expression 指定次数的字符串。
结构:REPLICATE (character_expression integer_expression)
如果integer_expression 值为负值,则返回NULL 。

3)REVERSE():
将指定的字符串的字符排列顺序颠倒。
结构:REVERSE (<character_expression>)
其中character_expression 可以是字符串、常数或一个列的值。

4)REPLACE():
返回被替换了指定子串的字符串。
结构:REPLACE (<string_expression1>, <string_expression2><string_expression3>)
用string_expression3 替换在string_expression1 中的string_expression2。

5)SPACE():
返回一个有指定长度的空白字符串。
结构:SPACE (<integer_expression>)
如果integer_expression 值为负值,则返回NULL 。

5)STUFF():
用另一子串替换字符串指定位置、长度的子串。
结构:STUFF (<character_expression1>, <start_ position>, <length>,<character_expression2>)

如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则返回NULL 值。

如果length 长度大于character_expression1 中 start_ position 以右的长度,则character_expression1 只保留首字符。

6、其他系统函数

(1)PATINDEX返回指定表达式中,第一次出现的起始位置。
(2)TEXTPTR返回对应于文本指针的值。

猜你喜欢

转载自blog.csdn.net/Viewinfinitely/article/details/121412580
今日推荐