您的位置:首页 > 数据库

sql server中常用函数集锦(整理)

2016-08-30 15:19 281 查看
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 ")

结果: 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息