sql server中常用函數集錦(整理)

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章