2016年5月1日 星期日

sql函數

lower:轉小寫

select ename, lower(ename) as '轉小寫結果'
from emp

從emp資料表中篩選ename欄位顯示,同時顯示將ename轉為全小寫的結果,並指定欄位名稱給轉小寫結果

ltrim,rtrim:移出左側或右側空白

select ltrim(ename) as '移除左側空白'
from emp

篩選emp資料表中ename欄位,並將資料內容左側空白移除後以指定欄位名稱'移除左側空白'列示結果

len:傳回字串長度
reverse:反轉字串
substring:取出字串部份內容

select ename, len(ename) as '字串長度', substring(ename,1,3) as '取出字串部份內容,從位置1到3', reverse(ename) as '反轉字串'
from emp

replace:取代指定文字

select replace(ename,'a','1') as '用1取代a'
from emp

str:轉型態為文字

select ename + ' got a pay about ' + str(sal)
from emp

上例sal原型態為int無法做文字合併,先轉為文字後再合併

replicate(指定字串, 重複次數):重複字串

select ename, replicate(ename, 2) as '重複兩次字串'
from emp

ename / 重複兩次字串
john / johnjohn
mary / marymary

stuff(目標字串, 開始位置, 指定取代長度, 替換字串):以替換字串取代目標字串中從開始位置開始的指定取代長度字元

select stuff('abcdefg',2,5,'-') 以'-'符號取代目標字串中2~5的位置(bcdef),結果為a-g

round(指定數字, 進位位數, 是否無條件捨去):四捨五入,可指定是否無條件捨去,不輸入則預設為否

select round(3.14159,4,1) 結果為3.14150

ceiling:無條件進位,往數值大的整數進位,例如ceiling(-2.2)結果為 -2
floor:無條件捨去,往數值小的整數進位,例如floor(-2.2)結果為-3

select ceiling(3.14159) 結果為4
select floor(3.14159)結果為3

space(空格數):產生指定空格數

select aaa + space(3) + bbb結果為aaa   bbb

pi:傳回數學pi常數,為3.14159.....

power(指定數字, 指定次方):對指定數字進行指定次方後傳回
sqrt:傳回平方根

power(2,3)結果為8,power(4, 0.5)結果為2
sqrt(4)結果為2


abs:傳回絕對值

abs(-99)結果為99

getdate:取得時間,顯示到毫秒

rand:產生0~1之間的隨機亂數

datepart(指定欲取得時間元素, 時間陣列資料):取得時間陣列中特定元素資料

datepart(year, getdate())假設當時時間為2016年…傳回結果為2016

datediff(時間差表示格式, 前端時間, 尾端時間):傳回尾端時間與前端時間差,並用指定的格式表示

datediff(day,getdate(),getdate()+3),getdate加特定數字的預設單位為day,所以結果為3
datediff(hour,getdate(),getdate()+3)結果為72

convert(指定資料形態, 轉換目標資料):將目標資料形態轉為指定形態

convert(nvarchar(30),1900)將整數形態的1900轉換為文字形態的1900
convert(int,'1900')將文字形態的1900轉換為整數形態的1900
convert(int,getdate())將當下時間改為整數形態表示

找sal欄位中的最大值、最小值,以及資料總筆數、總合、變異數、標準差
max(sal), min(sal), count(sal), sum(sal), var(sal), stdev(sal)

select count(*),count(discount) from emp
前者抓取總筆數,後者只抓非null值來計數

只計不重複筆數
select count(distinct(dept.dno)) from emp


沒有留言:

張貼留言