SQL SERVER2005經常使用函數
1、字符串函數
a)
Charindex函數,用於返回一個字符串在另外一個字符串中第一次出現的位置
i.
Select charindex(‘bj’,’I love bj’),此函數返回的結果是8
b)
Upper函數,用於將小寫字符轉換成大寫
i.
Select upper(‘abcde’),此函數返回的結果是ABCDE
c)
Ltrim函數,用於除去字符串左邊的空格
i.
Select ltrim(‘ I love bj’),此函數返回的結果是I love bj
d)
Rtrim函數,用於除去字符串右邊的空格
i.
Select rtrim(‘ I love bj ’),此函數返回結果是 I love bj
e)
Replace函數,用於將字符串中的一個字符替換成另外一個字符
i.
Select replace(‘abcdedd’,’d’,’f’),此函數返回的結果是abcfeff
2、日期函數
a)
Getdate()函數,用於返回當前系統時間
b)
Dateadd()函數,用於在日期的某部分上加上必定的值
i.
Select dateadd(mm,3,’02-09-2009’),此函數返回的結果是05-09-2009
c)
Datepart(),用於返回指定日期某部分的整數值
i.
Select datepart(year,’02-09-2009’),此函數返回的結果2009
d)
Datename(),用於返回日期所處的名稱
i.
Select datename(dw,’02-09-2009’),此函數會返回這一個日期對應的是星期幾
e)
Datediff(),用於比較日期指定部分的差別
Select datediff(dd,’02-09-2009’,’02-21-2009’),此函數會返回這兩個日期間的差值12
3、數學函數
a)
Abs()函數,返回該數值的絕對值,ABS(-89)的結果爲89
b)
Power()函數,用於計算數值的冪運算,POWER(5,2)結果爲25
c)
Round()函數,用於對數值進行四捨五入的運算,ROUND(3.14234,2)返回3.14,括號後面的2用於表示數值的精度
d)
Ceiling()函數,用於返回一個大於或等於現有數值的最小整數
i.
Ceiling(34.5),返回的結果是35
ii.
Ceiling(34.0),返回的結果是34
e)
Floor()函數,用於返回一個小於或等於現有數值的最大整數
i.
Floor(34.5),返回的結果是34
ii.
Floor(34.0),返回的結果是34
4、聚合函數
a)
Sum( ),用於求和
b)
Avg(),用於求平均值
c)
Max(),用於計算數值的最大值
d)
Min(),用於計算數值的最小值
e)
Count(),用於計數統計
注意:用聚合函數在查詢數據表中的某一列時,若是不只要查詢這一列的內容,則須要用GROUP BY子句來配合使用,例如:
Select sum(charge),name from accountbill where name=’wjc’ group by name
5、系統函數
a)
Convert( )用於數據類型轉換
i.
Convert(varchar(12),1234),返回結果是字符串型數據‘1234’
b)
Cast( )用於數據類型轉換,不多平臺支持此函數
i.
Cast(12 as varchar(3)),返回的是字符串‘12’
SQL SERVER2005函數應用實例
1、select ‘用戶’+phonenumber+’市話費用’+cast(charge as varchar(20))+’元’ as 市話費用 from accountbill where ispaid=0 and calltype=0
做用:從accountbill表中用戶市話(calltype=0)的欠費(ispaid=0)費用,其中用到了CAST函數,charge列的值本是貨幣的數據,爲了實現和字符串相連,將其轉換成字符串的數據
2、select ‘用戶’+phonenumber+’通話時長’+cast(ceiling(datediff(ss,starttime,endtime)\60) as varchar(20))+’分鐘’ from 「history-call」 where phonenumber=’13391819904’
做用:查詢手機號嗎是13391819904的用戶通話時長,不足一分鐘的按一分鐘計算;其中用到DATEDIFF函數來計算出用戶的通話時長,用CEILING函數來實現不足一分鐘按一分鐘計算的要求
3、select diff(dd,cast(,cast(year(dateadd(mm,1,accounttime))as varchar(10))+cast(month(dateadd(mm,1,accounttime)) as varchar(10)) as datetime), cast(‘2009-10-31’ as datetime) as 欠費天數 from acountbill where phonenumber=’13391819904’
做用:查詢手機號碼爲13391819904的用戶拖欠還款的天數