常常要用到一些函數還是做什麼計算的時候

有時知道是哪一個可是會忘記對不對或是如何使用

放一份自己找的到的很快就可以查到也不錯.....

--1.ASCII=>返回與指定的字符對應的十進制數
select ascii('A') A, ascii('a') a, ascii('0') zero, ascii(' ') space, ascii('趙') Word from dual
--結果:
--A	  A	  ZERO SPACE WORD
--65	97	48	 32    48047

--2.CHR=>給出整數,返回對應的字符;
select chr(48047) zhao, chr(65) chr65 from dual
--結果:
-- 	ZHAO	CHR65
--	趙	  A

--3.CONCAT=>連接兩個字串;
select concat('0000-','111111')||'轉33663' As PhoneNo from dual
--結果:
-- 	PHONENO
--	0000-111111轉33663

--4.INITCAP=>返回字串並將字串的第一個字母變為大寫;
select initcap('simle to me') FirstWordToupper from dual
--結果
--  FIRSTWORDTOUPPER
--  Simle To Me

--5.INSTR(S1,S2,B,E)
--在一個字串中尋找指定的字串,回傳指定的字串位置;
--S1 被搜尋字串 S2 要搜尋字串 B 開始位置,預設為1 E 結束位置,預設為1
select instr('oracle traning','ra',1,2) instring from dual
--結果
--  INSTRING
--	9

--6.LENGTH=>回傳字串長度
select '我是誰' As CName, length('我是誰') AS CLength,
'WHO AND I' As EName, length('WHO AND I') As ELength,
'99999.99' As iNum,length(to_char(99999.99)) As iLength
from dual
--結果
-- 	CNAME	  |CLENGTH	|ENAME	    |ELENGTH	|INUM	    |ILENGTH
--	我是誰	|3	      |WHO AND I	|9	      |99999.99	|8

--7.LOWER=>將所有字串轉為小寫
select lower('AaBbCcDd') As strResult from dual
--結果
--  STRRESULT
--	aabbccdd

--8.UPPER=>將所有字串轉為大寫
select upper('AaBbCcDd') As strResult from dual
--結果
--  STRRESULT
--	AABBCCDD

--9.RPAD和LPAD
--RPAD  在右邊補足設定長度或是截掉多於設定長度字串
--LPAD  在左邊補足設定長度或是截掉多於設定長度字串
select rpad('web',1,'~') as strResult from dual
select rpad('web',5,'~') as strResult from dual
select lpad('web',1,'~') as strResult from dual
select lpad('web',5,'~') as strResult from dual
select lpad(rpad('test',11,'~'),18,'~')from dual
--結果
--strResult
--w
--web~~
--w
--~~web

--10.LTRIM和RTRIM
--LTRIM  由左至右清除與設定相同的內容Oracle是一個一個比對有出現就清除至找不到為止之後出現也不會清除
--RTRIM  由右至左清除與設定相同的內容Oracle是一個一個比對有出現就清除至找不到為止之後出現也不會清除
select ltrim('902100111000991110224323','1') from dual
--結果
--902100111000991110224323
select ltrim('90100111000991110224323','109') from dual
--結果
--224323

--------------------------------------------------------------

--11.SUBSTR(string,start,count)取字串,從start開始,取count
select substr('123456789',3,2) As sSubstr from dual
--結果
--sSubstr
--34

--12.REPLACE('string','s1','s2')
--string   被取代的字串或變數 s1 被取代的字串 s2 要取代的字串
select replace('This is test word','test','prod') As sResult from dual
--結果
--sResult
--This is prod word

--13.SOUNDEX=>回傳與參數的字串讀音相同的字串
--下列三者讀音都相同所以回傳的值都一樣
select soundex('two') As t1, soundex('too') As t2, soundex('to') Ast3 from dual
select soundex('cap') As c1,soundex('cup') As c2 from dual
--結果
-- 	t1	  t2	  t3
--	T000	T000	T000
--  c1    c2
--  C100  C100

--14.TRIM去除空白或指定字元
select trim(' as ') As t1 from dual
select ltrim('@as','@') As t1 from dual
select ltrim(' as') As t1 from dual
select rtrim('as@','@') As t1 from dual
select rtrim('as ') As t1 from dual
--結果
--t1
--as
--as
--as
--as

--15.ABS 回傳指定值的絕對值
select abs(100) AS a1, abs(-100)As a2 from dual
--結果
-- a1  a2
-- 100 100

--16.ACOS=>反餘弦的值(oracle沒有提供內建的弧度和角度的轉換函數)
select ACOS(-1) pi,ACOS(1) ZERO FROM dual
--結果
--pi         ZERO
--3.1415927  0

--17.ASIN=>反正玄函數,返回-1到1,弧度
select asin(0.5),asin(1),asin(-1) from dual
--結果
--ASIN(.5)	        ASIN(1)	        ASIN(-1)
--0.523598775598299	1.5707963267949	-1.5707963267949

--18.ATAN=>反正切函數
select atan(1) from dual
--結果
--ATAN(1)
--0.78539816

--19.CEIL=>返回大於或等於輸入數字的最小整數
select ceil(93.1541) from dual
--結果
--CEIL(93.1541)
--94

--20.COS=>返回輸入數字的餘弦
select cos(-3.1415927) from dual
-- 結果
-- COS(-3.1415927)
-- -1

--------------------------------------------------------------

--21.COSH=>返回輸入數字反餘弦值
select cosh(20) from dual
--結果
--COSH(20)
--242582597.704895


--22.EXP=>返回輸入數字e的n次方根
select exp(2),exp(1) from dual
--結果
--EXP(2)    EXP(1)
--7.3890561 2.7182818


--23.FLOOR=>輸入數字取整數
select floor(2345.67) from dual;
--結果
--FLOOR(2345.67)
--2345

--24.LN=>返回輸入數字的自然對數
select ln(1),ln(2),ln(2.7182818) from dual
--結果
--LN(1)  LN(2)              LN(2.7182818)
--0      0.693147180559945  0.999999989530502


--25.LOG(n1,n2)=>返回以n1為底n2的對數
select log(2,1),log(2,4) from dual
--結果
--LOG(2,1)  LOG(2,4)
--0         2


--26.MOD(n1,n2)=>返回n1除以n2的餘數
select mod(10,3),mod(3,3),mod(2,3) from dual
--結果
--MOD(10,3)  MOD(3,3)  MOD(2,3)
--1         0         2


--27.POWER=>返回n1的n2次方根
select power(2,15),power(3,3) from dual
--結果
--POWER(2,50) POWER(3,3)
--32768         27


--28.ROUND和TRUNC=>按照指定的精度進行捨入
select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual
select ROUND(12355,-2),ROUND(12345.54521,2), trunc(12355,-2),trunc(12345.54521,2) FROM dual
--結果
--ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)
--56          -55          55          -55
--12400       12345.55	   12300	     12345.54

--29.SIGN=>取數字n的符號,大於0返回1,小於0返回-1,等於0返回0
select sign(123),sign(-100),sign(0) from dual
--結果
--SIGN(123) SIGN(-100)   SIGN(0)
--1         -1           0


--30.SIN=>返回輸入數字的正弦值
select sin(1.57079) from dual
--結果
--SIN(1.57079)
--1

--------------------------------------------------------------

--31.SIGH=>返回雙曲正弦的值
select sin(20),sinh(20) from dual
--結果
--SIN(20)   SINH(20)
--.91294525 242582598

--32.SQRT=>返回數字n的根
select sqrt(64),sqrt(10) from dual
--結果
--SQRT(64)  SQRT(10)
--      8   3.1622777

--33.TAN=>返回數字的正切值
select tan(20),tan(10) from dual
--結果
--TAN(20)    TAN(10)
--2.2371609  .64836083

--34.TANH=>返回數字n的雙曲正切值
select tanh(20),tan(20) from dual
--結果
--TANH(20)   TAN(20)
        1    2.2371609
 
--35.TRUNC=>按照指定的精度截取一個數
select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual
--結果
--TRUNC1   TRUNC(124.16666,2)
--   100   124.16

--36.ADD_MONTHS=>增加或減去月份
select to_char(add_months(to_date('201006','yyyymm'),2),'yyyymm') from dual
--TO_CHAR
--201008
select to_char(add_months(to_date('201006','yyyymm'),-2),'yyyymm') from dual
--TO_CHA
--201004

--37.LAST_DAY=>返回日期的最後一天
select last_day(sysdate) strLastDate from dual
--結果
--strLastDate
--2010/7/31 下午 02:48:23

--38.MONTHS_BETWEEN(date2,date1)=>date2-date1的月份
select months_between('06-7月-2010','06-5月-2010') mon_between from dual
--結果
--MON_BETWEEN
--         2
select months_between(to_date('2009.05.20','yyyy.mm.dd'),to_date('2010.05.20','yyyy.mm.dd')) mon_betw from dual
--結果
--MON_BETW
--     -12

--39.NEW_TIME(date,'this','that')=>在this時區=other時區的日期和時間
select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time
    (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual
--結果
--BJ_TIME               LOS_ANGLES
--2010.07.06 14:53:32   2010.07.06 21:53:32

--40.NEXT_DAY(date,'day')=>日期date和星期x之後計算下一個星期x的日期
select next_day('6-7月-2010','星期二') next_day from dual
--結果
--NEXT_DAY
--2010/7/13 

--------------------------------------------------------------

--41.SYSDATE=>用來得到系統的當前日期及星期x
select to_char(sysdate,'dd-mm-yyyy day') strToday from dual
--結果
--strToday
--06-07-2010 星期二

--42.trunc(date,fmt) 按照給出的要求將日期截斷,如果fmt='mi'表示保留分,截斷秒
select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,
       to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual
--結果
--HH                    HHMM
--2010.07.06 14:00:00   2010.07.06 14:58:00

--43.CHARTOROWID=>將字串類型轉換為ROWID類型
select rowid,rowidtochar(rowid),ENAME from usertable
--結果
--ROWID              ROWIDTOCHAR(ROWID) ENAME
--AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH
--AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN

--44.CONVERT(c,dset,sset)=>將原字串 sset從一個語言字符集轉換到另一個目的dset字符集
select convert('strutz','we8hp','f7dec') "conversion" from dual
--結果
--conversion
--strutz

--45.HEXTORAW=>將一個十六進位構成的字串轉換為二進位
--46.RAWTOHEXT=>將一個二進餒構成的字串轉換為十六進位 
--47.ROWIDTOCHAR=>將ROWID數據類型轉換為字符類型

--48.TO_CHAR(date,'format')=>將日期轉為字串
select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') strTOCHAR from dual
--結果
--strTOCHAR
--2010/07/06 15:11:27
 
--49.TO_DATE(string,'format')將字串轉為日期
select to_date('20100706','YYYYMMDD') strTODATE from dual
--結果
--strTODATE
--2010/7/6

--50.TO_MULTI_BYTE=>將字串中的單字節字轉化為多字節字
select to_multi_byte('高') As tomultibyte from dual
--結果
--tomultibyte
--高

--------------------------------------------------------------

--51.TO_NUMBER=>將輸入的字串轉換為數字
select to_number('1999') year from dual
--結果
--year
--1999

--52.BFILENAME(dir,file)=>指定一個外部二進制文件
insert into test_tbl values(bfilename('lob_dir1','image1.gif'))

--53.CONVERT('x','desc','source')=>將x字段或變量的source轉換為desc
SELECT CONVERT('GroB','US7ASCII','WE8HP') FROM dual

--54.DUMP(s,fmt,start,length)、EMPTY_BLOB()、EMPTY_CLOB()
--PS:沒用到不會解釋

--55.GREATEST=>返回一組表達式中的最大值,比較字串的編碼大小.
select greatest('AA','AB','AC') from dual
--結果
--GR
--AC
select greatest('啊','安','天') from dual
--結果
--GR
--啊

--56.LEAST=>返回一組表達式中的最小值
select least('啊','安','天') from dual
--結果
--LE
--天

--57.USER=>返回目前用戶的名字
select user from  dual
--結果
--USER
--xxxx


--58.USEREVN=>返回當前用戶環境的信息,opt可以是:
--ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE
--ISDBA  查看當前用戶是否是DBA如果是則返回true
SQL> select userenv('isdba') from dual;
--結果
--USEREN
--FALSE

--59.AVG(DISTINCT|ALL)=>all表示對所有的值求平均值,distinct只對不同的值求平均值
select avg(distinct img11) from img_file
--結果
--AVG(DISTINCTSAL)
--27657.5592840114
select avg(all img11) from img_file
--結果
--AVG(ALLSAL)
--4540.0510831344

--60.MAX(DISTINCT|ALL)=>求最大值,ALL表示對所有的值求最大值,DISTINCT 表示對不同的值求最大值,相同的只取一次
select MAX(distinct img11) from img_file
--MAX(DISTINCTSAL)
--        4800000

--------------------------------------------------------------

--61.MIN(DISTINCT|ALL)=>求最小值,ALL表示對所有的值求最小值,DISTINCT表示對不同的值求最小值,相同的只取一次
select MIN(distinct img11) from img_file
--結果
--MIN(ALLSAL)
--    -18106

--62.STDDEV(distinct|all)=>求標準差,ALL表示對所有的值求標準差,DISTINCT表示只對不同的值求標準差
select stddev(img11) from img_file
--結果
--  STDDEV(SAL)
--  23598.901717834

--63.VARIANCE(DISTINCT|ALL)=>求協方差
select variance(img11) from img_file
--結果
--VARIANCE(SAL)
--556908162.287986
       
--64.NVL(expr1, expr2) 拿expr1來判斷,是null就用expr2取代
--65.NVL2(expr1, expr2, expr3) 拿expr1判斷,不是null填expr2,是null填expr3
--66.NULLIF(expr1, expr2) 如果1=2就塞null,不相等就填1
--67.COALESCE (expr1, expr2,…,exprn) 從1開始找,不是null就回傳該值
--68.Decode(條件,值1,回傳值1,值2,回傳值2,...值n,回傳值n,ELSE回傳值)
select decode(10,10,1,2) As strResult from dual
--結果
--1
arrow
arrow
    全站熱搜

    鴨爸 發表在 痞客邦 留言(0) 人氣()