~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术: SQL Server2014

作者:小益


在SQL中拥有很多可用于计数和计算的内建函数,常用的有几种类型的函数,有聚合函数、类型转换函数、日期函数、数字函数、字符串函数、系统函数。

聚合函数:能计算从列中取得的值,返回一个单一的值。

主要有这几种:Avg():放回平均值;Count():返回行数;first():返回第一个记录的值;last():返回最后一个记录的值;Max():返回最大值;Min():返回最小值;Sum():返回总和。

聚合函数:

Avg(表达式):返回表达式中所有的平均值,仅用于数字并列自动忽略null值。

例子:返回每个产品类别的平均价格

sql server 接收函数返回的字符串 sql函数返回值类型_数据类型

Count(*) 返回组中的行数(包括有NULL值的列)。

例子:返回每个品牌和产品数量。

 

sql server 接收函数返回的字符串 sql函数返回值类型_database_02

Max(表达式) 返回表达式中的最大值,忽略NULL值。可用于数字、字符和日期时间列。

例子:获取每个品牌的品牌名称和最高价格:

sql server 接收函数返回的字符串 sql函数返回值类型_sql_03

 

MIN(表达式) 返回表达式中的最小值,忽略NULL值。可用于数字、字符和日期时间列。

例子:获取最低价格大于 500 的产品类别。

sql server 接收函数返回的字符串 sql函数返回值类型_数据类型_04

 

SUM(表达式) :返回表达式中所有的总和,忽略NULL值。仅用于数字列。

例子:查找每种产品的库存,仅返回库存大于 100 的产品

sql server 接收函数返回的字符串 sql函数返回值类型_sql_05

转换函数:

Convert:

sql server 接收函数返回的字符串 sql函数返回值类型_数据类型_06

Cast:

sql server 接收函数返回的字符串 sql函数返回值类型_数据库_07

Cast和Convert的区别:

用来将一种数据类型的表达式转换为另一种数据类型的表达式,提供相似的功能,只是语法不同。在时间转化中一般用到convert,因为它比cast多加了一个style(int类型),可以转化成不同时间的格式。

日期函数:由于日期不能直接执行算术函数,所以日期函数就十分有用。有以下这些函数:GETDATE():当前的系统函数;DATEADD():返回带有指定数字的日期,该数字添加到指定的日期部分;DATEDIFF() :返回两个日期中指定的日期部分之间的差值;DATENAME() :返回日期中日期部分的字符串形式;DATEPART() 返回日期中指定的日期部分的整数形式;YEAR() 返回指定日期的年份数值;MONTH()返回指定日期的月份数值;DAY(date)返回指定日期的天数值。

数字函数:对数字执行代数运算。主要有以下这些:

ABS():返回数值表达式的绝对值;FLOOR():返回小于或等于数值表达式的最大整数;CEILING():返回大于或等于数值表达式的最小整数;RAND():随机返回的到0-1之间的近似浮点值,可以对seed指定为整数表达式(可选);ROUND():对数值表达式截取指定的整数长度,返回四舍五入后的值。

字符串函数:可用于binary 和varbinary数据类型列,但主要用于char和varchar数据类型。主要有这些:Expr1+expr2 返回两个表达式的组合形式的字符串;LEN():返回字符表达式的长度;LOWER():将字符表达式全部转换为小写;LTRIM():返回删除掉前面空格的字符表达式;REVERSE():反转字符表达式;RIGHT():返回从字符表达式最右端起根据指定的字符个数得到的字符;RTRIM():返回删除掉其后空格的字符表达式;SUBSTRING():返回从字符表达式的指定位置开始,截取指定长度得到字符集;UPPER():将字符表达式全部转换为大写。

系统函数:用于返回元数据或配置设置。主要有:COALESCE():返回第一个非NULL表达式;DATALENGTH():返回任何数据类型的实际长度;ISNULL():使用指定的值替换的NULL表达式;NULLIF() Expr1与Expr2相等时,返回Null,否则返回第一个表达式;row_number分页:row_number的用途的非常广泛,一般可以用来实现web程序的分页,他会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列,或者几列进行排序才能生成序号。