sqlserver中常⽤函数集锦(整理)
1、聚合函数
这个对于有sql 基础的⼈来说,实在再熟悉不过了,在这简单说明⼀下,sum,avg,max,min,count,聚合函数不统计值为null的⾏,我们可以通过distinct过滤掉重复的记录,也可以通过group by 分组。Count 函数不数带有 Null 字段的记录,除⾮使⽤星号,Count 将计算所有记录的总量,包括有 Null 的字段的记录。Count(*) ⽐ Count ([Column Name]) 快得多。不要将星号放在引号 (' ') 中。如果我们要对某个字段进⾏计数,在⾄少有⼀个字段的值不为 Null 的情况下, Count 函数只计算⼀个记录。如果全部的指定字段为 Null,没有记录会被计算。使⽤ (&) 分隔字段名,可以写成count('字段名[&字段名[&字段名...]')。
2、数学函数
ceiling(n):返回不⼩于n的最⼩整数
floor(n):返回不⼤于n的最⼤整数
round(m,n):四舍五⼊,n为⼩数的位数
rand:随机⽣成[0,1]之间的float类型值
sign(expr):当expr为整数、0、负数时分别返回1、0、-1
sqrt(expr):返回expr的平⽅根
abs(expr):返回expr的绝对值
power(expr,n):返回expr的n次⽅的值
3、字符串函数
字符串函数在处理字符串和类型转换中都起着⾮常重要的作⽤。
1) 字符串转换函数
a、ASCII(expr):返回expr的最左端的字符的ascii码值,如果expr是纯数字,如1234,则可以写成ascii(1234),但如果不是纯数字,如a1234,则必须加引号,如ascii('a1234');
b、CHAR(expr):将ascii码转换成字符,如果不存在ascii码为expr的字符,则返回null;
c、LOWER(expr):将expr全部转换为⼩写
d、UPPER(expr):将expr全部转换为⼤写
e、STR(expr,[length,[decimal]]):把数值型数据转换为字符型数据。length 指定返回的字符串的长度,decimal 指定返回的⼩数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。当length 或者decimal 为负值时,返回NULL; 当length ⼩于⼩数点左边(包括符号位)的位数时,返回length 个*; 先服从length ,再取decimal ; 当返回的字符串位数⼩于length ,左边补⾜空格。
4、去空格函数
1)LTRIM():去左空格
2)RTRIM():去有空格
5、取⼦串函数
1)LEFT(expr,length):取字符串expr左边length个字符
2)RIGHT(expr,length):取字符串expr右边length个字符
3)SUBSTRING(expr,start,length):取字符串从第start个字符开始的length个字符
4)CHARINDEX ( expression1 , expression2 [ , start_location ] ) :⽤来在⼀段字符中搜索字符或者字
符串,返回字符串中指定表达式的起始位置。其中expression1指定要查的字符串,expression2是被搜索的字符串,start_location是从expression2的第⼏个字符开始搜索。例如,我们想查莱昂纳多 迪卡普⾥奥Leonardo DiCaprio的姓,那么我们可以这样来写 select substring('Leonardo DiCaprio',charindex(' ','Leonardo DiCaprio') + 1,length('Leonardo DiCaprio')).
5)PATINDEX ( '%pattern%' , expression ):返回expression中'%pattern%'所在的位置,patten前后必须有%。如:
select patindex('%[d]%','rcrdsddddaadadffdr')
返回4,[]中d在字符串rcrdsddddaadadffdr的第⼀次出现的位置。
select patindex('%[cd]%','rcrdsdddrdaadadffdr')
返回2,[]中c,d在其中⼀个的位置,返回最先出现的这个位置,c在此字符串⾥第⼀次出现位置是2,⽽d是4,结果取最先的那个。
select patindex('%[sd]%','rcrdsdddrdaadadffdr')
返回4,[]中c,d在其中⼀个的位置,返回最先出现的这个位置,s在此字符串⾥第⼀次出现位置是5,⽽d是4,结果取最先的那个。
select patindex('%[^r]%','rrrdsdddrdaadadffdr')
返回4,除[]中的字符串的匹配字符,第⼀次出现d不在[^r]⾥,所以就到第⼀次这位。
select patindex('%[^rd]%','rrrdsdddrdaadadffdr')
返回5,除[]中的字符串的匹配字符,第⼀次出现s不在[^rd]⾥,所以就到第⼀次这位。
select patindex('%[^rsd]%','rrrdsdddrdaadadffdr')
返回11,除[]中的字符串的匹配字符,第⼀次出现a不在[^rsd]⾥,所以就到第⼀次这位。
6、⽇期函数
1.DateAdd ( I , N , D )
将⼀个⽇期加上⼀段期间后的⽇期。 I :设定⼀个⽇期( Date )所加上的⼀段期间的单位。譬如 interval="d" 表⽰ N的单位为⽇。 I的设定值如下:
yyyy Year 年
q Quarter 季
m Month ⽉
d Day ⽇
Day of yeary Dy y ⼀年的⽇数,⼀年中的第⼏⽇ 1-366
w Weekday ⼀周的⽇数,⼀周中的第⼏⽇ 1-7
Weekday Dw w 周,⼀年中的第⼏周 0 ~ 51//sql server 下不可⽤,不知道怎么回事
h Hour 时
n Minute 分
s Second 秒
N :数值表达式,设定⼀个⽇期所加上的⼀段期间,可为正值或负值,正值表⽰加(结果为 >date 以后的⽇期),负值表⽰减(结果为
>date 以前的⽇期)。
D :待加减的⽇期。
例⼦: DateAdd ( "m" , 1 , "31-Jan-98")
结果: 28-Feb-98
说明:将⽇期 31-Jan-98 加上⼀个⽉,结果为 28-Feb-98 ⽽⾮ 31-Fe-98 。
例⼦: DateAdd ( "d" , 20 , "30-Jan-99")
结果: 1999/2/9
说明:将⼀个⽇期 30-Jan-99 加上 20 天后的⽇期。
2.Day( ⽇期的字符串或表达式 )、Month(⽇期的字符串或表达式)、Year(⽇期的字符串或表达式)
传回⽇期的「⽇」、「⽉」、「年」部份。
例⼦: Day(" 12/1/1999 ")
结果: 1
例⼦: Month(" 12/1/1999 ")
datediff是字符型函数结果: 12
例⼦: Year(" 12/1/1999 ")
结果: 1999
3.DateDiff (I , D1 , D2[,FW[,FY]])
计算两个⽇期之间的期间。
I :设定两个⽇期之间的期间计算之单位。譬如 >I="m" 表⽰计算的单位为⽉。 >I 的设定值如:
yyyy > Year 年
q Quarter 季
m Month ⽉
d Day ⽇
Day of year Dy y ⼀年的⽇数,⼀年中的第⼏⽇ 1-366
w Weekday ⼀周的⽇数,⼀周中的第⼏⽇ 1-7
Weekday Dw w 周,⼀年中的第⼏周 0 ~ 51
h Hour 时
n Minute 分
s Second 秒
D1 ,D2:计算期间的两个⽇期表达式,若 >date1 较早,则两个⽇期之间的期间结果为正值;若 >date2 较早, 则结果为负值。
4. datepart(I,D) 返回代表指定⽇期的指定部分的整数。I :设定⼀个⽇期( Date )所加上的⼀段期间的单位。譬如 interval="d" 表⽰ N 的单位为⽇。 I的设定值如下:
yyyy Year 年
q Quarter 季
m Month ⽉
d Day ⽇
Day of year Dy y ⼀年的⽇数,⼀年中的第⼏⽇ 1-366
w Weekday ⼀周的⽇数,⼀周中的第⼏⽇ 1-7
Weekday Dw w 周,⼀年中的第⼏周 0 ~ 51
h Hour 时
n Minute 分
s Second 秒
D:指定⽇期。例如:SELECT DATEPART(m, '2004-10-15') --返回 10
5.DateName(I,D):返回代表指定⽇期的指定部分的字符串(请注意与datepart的区别)。I :设定⼀个⽇期( Date )所加上的⼀段期间的单位。譬如 interval="d" 表⽰ N的单位为⽇。 I的设定值如下:
yyyy Year 年
q Quarter 季
m Month ⽉
d Day ⽇
Day of year Dy y ⼀年的⽇数,⼀年中的第⼏⽇ 1-366
w Weekday ⼀周的⽇数,⼀周中的第⼏⽇ 1-7
Weekday Dw w 周,⼀年中的第⼏周 0 ~ 51
h Hour 时
n Minute 分
s Second 秒
D:指定⽇期。例如:select datename(w,getdate()) --返回 '星期⼀',再举⼀例,注意datepart和datename的区别:
select datepart(m,getdate()) --返回 '7' (数值7)
select datename(month,getdate()) --返回 '07 (字符串07)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论