常常要用到一些函數還是做什麼計算的時候
有時知道是哪一個可是會忘記對不對或是如何使用
放一份自己找的到的很快就可以查到也不錯.....
--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
全站熱搜
留言列表