聚合函数对一组值计算后返回单个值。除了count(统计项数)函数以外,其他的聚合函数在计算式都会忽略空值(null)。所有的聚合函数均为确定性函数。即任何时候使用一组相同的输入值调用聚合函数执行后的返回值都是相同的,无二义性.
1:AVG(表达式)
功能:计算表达式平均值
2:SUM(表达式)
功能:计算表达式之和
3:COUNT(表达式)
功能:计算满足表达式的记录数目
4:MAX(表达式)
功能:计算表达式最大值
5:MIN(表达式)
功能:计算表达式最小值
6. CAST、CONVERT都可以执行数据类型转换。
在大部分情况下,两者执行同样的功能,不同的是CONVERT还提供一些特别的日期格式转换,而CAST没有这个功能。
语法: CAST (expression AS data_type [ (length ) ])
功能: 将表达式按照指定的类型(长度)转换并输出
示例:
select cast (19.666 as decimal(4,2))----19.67,返回4位十进制数值,保留小数点后2位
7:convert
语法:CONVERT(data_type(length), data_to_be_converted, style)
功能:将日期时间数据按照指定的类型和长度转换并输出
示例:
select convert(varchar(10),getdate(),121)----2017-11-24,按年-月-日输出10位长度日期
select convert (int,‘232’)----232,转换格式
PS:参数 style的详细说明表见下附图片
8:getdate()
功能:获取当前日期
9:Year(date数据)、Month(date数据)、Day(date数据)
功能:获取date数据的年、月、日 信息
10:DATEPART(datepart , date数据)
功能:返回日期/时间的单独部分,比如年、月、日、小时、分钟等等
示例:
select datepart(dy, getdate())----328(本年第328天)
11:dateadd (datepart, number, date数据)
功能:将某个日期加上一个特定的时间间隔值后返回datetime数据类型的值
示例:(PS:具体datepart 参数说明详见右表)
select dateadd(YY,10,getdate())----今天往后加十年
12:datediff (datepart, startdate, enddate)
功能:将使用enddate减以startdate的值,如果startdate晚于enddate将返回负值。执行结果如果超出整数范围将提示错误。
示例:
select datediff(day,'2011-11-11','2012-12-12')----397
13:len( string_expression )
功能:获取字符串的长度(字符数),但不包括右边的空格。
示例:select len(' xxxxx')----5,左侧有空格
14:space(integer_expression)
功能:获取空格。这里的integer_expression为指示空格个数的正整数。
示例:select ('Ran' +space(2)+'dy')--------xxx xx
15:清除左边空格LTRIM
示例:select LTRIM(‘ xxxx’)----xxxx,消除左侧空格
16:清除右边空格RTRIM
示例:select RTRIM(‘xxxx ’)----xxxx,消除右侧空格
17:截取左边字符串 LEFT
示例:select left('123456789',3) --输出 123
18:截取右边字符串 RIGHT
示例:select right('123456789',3) --输出 789
19:截取指定位置字符串SUBSTRING
语法:substring( expression, start,length)
说明:
start:指定子字符串开始位置的整数
length:一个正整数,指定要返回的expression的字符数或字节数。如果length为负,则会返回错误。
示例:
select substring(‘hello’,1,2) --从第1位开始输出2个字符串, he
20:REPLICATE
功能:按照指定的整数次数,重复生成一个字符串形式的表达式,结果为字符串。
语法:replicate( character_expression, integer_expression )
示例: print 'Who?'+REPLICATE(CHAR(10)+CHAR(13),2) +'Randy'
PS: CHAR(10)+CHAR(13) 功能为换行、回车
21:REPLACE
功能:用另一个字符串值替换出现的所有指定字符串值。
语法:REPLACE ( string_expression1 , string_expression2 , string_expression3 )
说明:
string_expression1:要搜索的字符串表达式;
string_expression2:被替换的字符串
string_expression3:替换字符串
示例:SELECT REPLACE('abcde', 'abc', 'xxx') --xxxde
NULL值处理函数
SQL Server中处理Null值的两个有用函数:
22:ISNULL函数
功能:判断表达式,为NUll时返回指定值,不为NUll时,返回表达式的值
示例:
SELECT ISNULL(‘randy’,0)--不为NULL时返回表达式’Randy’;
SELECT ISNULL(null,999)-----为NULL时,返回指定值 999
23:COALESCE函数
功能:返回一系列表达式中第一个不为NULL的值.
表达式的顺序可以按照优先级排列,即按照优先级依次判断表达式是否为NULL
示例:
SELECT COALESCE(NULL, 'randy', 'zzz', null)----’Randy’
SELECT COALESCE(优先事件1,优先事件2,优先事件3,优先事件4)
26: 一些实用数学函数
SELECT FLOOR(1.666)--------1 向下取整
SELECT CEILING(0.414)------1 向上取整
SELECT ROUND(1.414,1)-----1.400 四舍五入至小数点后一位
SELECT dbo.trunc(6.35)-----6 截取整数位
SELECT ABS(-4.414)---------4 取绝对值
SELECT SIGN(-4.414)--------返回-1.000 取符号
*****取日期函数*************
SELECT dbo.BOY(GETDATE())--取本年第一天
SELECT dbo.BOD(GETDATE())--取当前日期
SELECT dbo.BOQ(GETDATE())--取本季度第一天
SELECT dbo.BOM(GETDATE())--取本月第一天
SELECT dbo.BOW(GETDATE())--取本周第一天-------周一
----------------------------------------------------------
SELECT dbo.EOY(GETDATE())--取本年最后一天
SELECT dbo.EOD(GETDATE())--取当前日期
SELECT dbo.EOQ(GETDATE())--取本季度最后一天
SELECT dbo.EOM(GETDATE())--取本月最后一天
SELECT dbo.EOW(GETDATE())--取本周最后一天-------周日
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,GETDATE()),120)+‘1’)
--- 取本月最后一天
SQL 查询随机函数用法:
select * from (select rn.*, row_number() over(order by dbms_random.value) from ( SELECT XXX as 客户号 FROM XXX WHERE XXX = XXX AND ROWNUM < 100 ) rn) where rownum = 1