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

Posted mb62e7593c01ba5

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)聚合函数使用位置

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

(12)在SELECT 查询语句后面控制查询的行数(LIMIT )
显示学生表前5行数据:​​​SELECT * FROM STU LIMIT 5​

2、类型转换函数

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

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

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

(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())

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

4、数学函数

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

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返回对应于文本指针的值。


以上是关于SQL数据库语言基础之SqlServer系统函数聚合集合函数大总结的主要内容,如果未能解决你的问题,请参考以下文章

SQL数据库语言基础之SqlServer视图的创建修改与视图数据的增删改查

Sql Server函数全解之系统函数

Sql Server函数全解之系统函数

SQL数据库语言基础之SqlServer的自动化管理功能(SQL Server代理作业警报操作员)

SQL注入之SQL server

怎么查看sql server 版本