1. 程式人生 > >oracle的內置函數

oracle的內置函數

sta esp 返回 大於 condition expr arc n) using

1數值型函數:
    1.1絕對值、取余、判斷數值正負函數
        1)ABS(n) 函數。用於返回絕對值。該參數輸入一個參數,參數類型為數值型,加入參數為可以隱式轉換為數值類型,也可以
        例:select ABS(100),ABS(-100),ABS(100) FROM DUAL;
        2)MOD(n2,n1)函數。該函數表示返回n2/n1的余數。參數為任意數值或可以隱式轉換為數值的類型。
        例:select MOD(5,2),MOD(8/3,5),MOD(10,5),MOD(-10,6),MOD(1,0) FROM DUAL;
        3)SIAN(N)函數。返回參數n的符號,正數返回1,0返回0,負數返回-1
.但如果n為BINARY_FLOAT或FINARY_DOUBLE類型時,n>=0 或者n=NaN函數會返回1. 例:select sign(9),sign(-9),sign(0.00),sign(-2*9) from dual; 1.2三角函數: cos(n):返回參數n的余弦,n為弧度表示的角度: 例:select cos(3.1415926),cos(3.1415926) from dual; acos(n):返回n的反余弦值 cosh(n):返回n的雙曲余弦值 sin(n):返回n的正弦值 asin(n):返回n的反正弦值 tan(n):返回n的正切值 tanh(n):返回n的雙曲正切值 atan(n):返回n的反正切值
1.3返回以指定數值為準整數的函數 CELL(n)函數。返回大於等於輸入參數的最小整數。 例:select cell(10),cell(10.5),cell(-10.2) from dual; FLOOR(N):返回結果是小於或等於參數的最大整數。 例:select floor(10),floor(10.5),floor(-10.2) from dual; 1.4指數,對數函數 sqrt(n):函數。該函數返回n的平方根。n不能為負數,為浮點數時返回nan。 例:select sort(100),sqrt(
53.9) from dual; power(n2,n1):利用該函數可以得到n2的n1次冪的結果。n2為負數,則n1必須為整數。 log(n1,n2)函數。利用該函數可以返回以n1為底n2的對數。n1是除1和0以外的任意正數。 例:select log(10.100),log(10.5,100),power(10,2) from dual; 1.5四舍五入截取函數 round(n,integer)函數。它將數值n四舍五入成第二個參數指定的形式的十進制數。 例:select round(100.23456,4),round(100.23456,2.56),round(155.23456,-2) from dual; 結果: 100.2345 100.23 200 trunc(n,integer) 函數。它把數值n根據integer的值進行截取 例:select trunc(100.23456,4)trunc(100.23456,2.56),trunc(155.23456,-2),trunc(155.234546) from dual; 結果: 100.2345 100.23 100 155 2.字符型函數: 2.1 ASCII碼與字符轉換函數 CHR(n[USING NCHAR_CS])函數。根據指定的字符集,將給定的ASCII碼轉換為字符。 例:select CHR(65) || CHR(66) || CHR(67) ABC,CHR(54678) FROM DUAL; 結果: ABC 諙 2.2 獲取字符串長度函數 length(char) :獲取到指定字符串的長度 例: select length(abcde我fghi) from dual; 結果: 10 2.3 字符串截取函數 substr(char,position,substring_length) : char:原始字符串, position:截取開始位置,初始為1,負數從右邊算起, substring_length:截取的長度 例:select substr(abcde我fghi,5,2),substr(abcde我fghi,5,2) from dual; 結果: e我 我f 2.4 字符串連接函數 concat(char1,char2) 或者是 || select concat(我愛你,中國), 山有木兮 || 木有枝 from dual; 結果: 我愛你中國 山有木兮木有枝 2.5 字符串搜索函數:在一個指定字符串中搜索是否存在另一個字符串。 instr(string,subString,position[,occurrence]) 例:select instr(this is a 測試!,),instr(this is a 測試!,s,-1) from dual; 2.6 字母大小寫轉換函數 upper(char):參數轉換成大寫 lower(char):參數轉換成小寫 initcap(char):首字母轉換成大寫 2.7 帶排序參數的字母大小寫轉換參數 nls_initcap(char[,nlsparam]),將指定參數的第一個字母轉換成大寫。 nls_upper(char[,nlsparam])將指定參數變為大寫。 nls_lower(char[,nlsparam]) 將指定參數轉換為小寫。 2.8 指定參數排序函數 nlssort(char[,nlsparam])函數,根據nlsparam指定的方式對char進行排序。 2.9 替換字符串函數 replace(char,search_string,replacement_string):替換char中的search_string為replacement_string; 例:select replace(this is a test,tes,resul) from dual; 2.10 字符串填充函數 rpad(字符串,n,要填充的字符串):在字符串右邊填充字符到指定長度n lpad(字符串,n,要填充的字符串):在字符串左邊填充字符到指定長度n 2.11 刪除字符串首位指定字符的函數 trim():刪除指定的前綴或尾隨的字符,默認刪除空格 2.12字符集名稱和ID互換函數 nls_charset_id(string):根據字符集名稱得到對應ID nls_charset_name(number):根據字符集ID得到對應的名字 3.日期型函數 3.1系統日期,時間函數 SYSDATE函數。得到當前系統的日期 例:select TO_CHAR(SYSDATE,YYYY-MM-DD HH24:MI:SS) FROM DUAL; SYSTIMESTAMP函數。返回系統時間。 例:select systimestamp from dual; 3.2得到數據庫時區函數 dbtimezone函數:返回數據庫時區 3.3為日期加上指定月份函數 add_months(date,integer):指定日期data加一個integer月份數,負數表示減去的月份數 3.4返回指定月份最後一天的函數 next_day(date)函數 3.5返回指定日期後一周的日期函數 next_day(date,char)函數; 3.6返回回話所在時區當前日期函數 current_date函數; 3.7提取指定日期特定部分的函數 EXTRACT函數:從指定的時間當中提取到指定的日期部分。 例:select extract(year from sysdate) year from dual; 3.8得到兩個日期之間的月份數 months_between(date1,date2)函數。返回兩個時間月份的差值: 3.9時區時間轉換函數 new_time(date,temezone1,timezone2)函數。該函數將返回時間date在時區timezone1轉換到時區timezone2的時間。 3.10日期四舍五入,截取函數 round(date,fmt)函數。將函數date舍入到fmt指定的形式。如果參數fmt被省略,則date將被處理到最近的一天。 例:select to_char(round(to_date(2010-5-1 21:00:00,YYYY-MM-DD HH24:MI:SS)),YYYY-MM-DD HH24:MI:SS) FROM DUAL; TRUNC(DATE,FMT)函數,該函數將date截取到fmt指定的形式,如果fmt省略,則截取到最近的日期。 4.轉換函數 4.1字符串轉ASCII類型字符串函數 ASCII(char)函數。 例:select ASCIISTR(這是測試) FROM DUAL; 4.2二進制轉十進制函數 bin_to_num(data[,data...])函數,該函數可以將二進制轉化成對應的十進制。data表示二進制數,一位用‘,’隔開 例:select bin_to_num(1,1,0) from dual; 4.3數據類型轉換函數 cast(expr as type_name)函數。將expr參數轉換成type_name類型c,多用於數字與字符,字符與日期之間的轉換。 4.4字符串和ROWID相互轉換函數 chartorowid(char)函數。該函數將字符串類型轉換成rowid類型。 ROWIDTOCHAR(rowid)函數,將行記錄的rowid轉換成字符串。 ROWIDTONCHAR(rowid)函數,將rowid轉換晨成varchar2類型。 4.5字符串在字符串間轉換函數 convert函數:用於把字符串從一個字符集轉到另一個字符集。 4.6十六進制字符串與RAW類型相互轉換函數 HEXTORAW(char)函數。把十六進制的字符串轉換成raw類型的數據 RAWTOHEX(raw):把raw類型表示成一個由十六進制字符標識的串,返回varchar2類型。 4.7數值轉換成字符型函數 TO_CHAR(number):將一個數值型參數轉換成一個字符型數據。 TO_CHAR(date):把一個日期型數據轉換成一個字符型數據。 4.8字符轉日期型函數 TO_DATE(char[,fmt[,nlsparam]])函數:將字符型函數轉成日期型數據。 例:select TO_DATE(2018-8-9,YYYY-MM-DD,MONTH) FROM DUAL; 結果: 7月 4.9字符型轉數字函數 TO_NUMBER(expr[,fmt[,nlsparam]])函數:將字符串轉換成數字 4.10全角轉半角函數 TO_SINCLE_BYTE(char)函數。將全角轉換成半角。 5.NULL函數 5.1返回表達式為null的函數 coalesce(expr)函數:返回列表中第一個不為null的表達式。如果都為null,則返回一個null。 5.2排除指定條件函數 lnnvl(condition)函數:該函數可以得到除了condition要求條件之外的數據,包括null的條件, 例:select * from productinfo where lnnvl(quantity>=70); 5.3替換null值函數 nvl(exprl,expr2)函數:如果exprl是null,就替換成expr2的值,否則返回expr1的值。 nvl2(expr1,expr2,expr3)函數:如果expr1是null,就返回expr3的值,當expr1不為空時,則返回expr2的值。 6.集合函數 6.1求平均值函數 AVG([distinctlall]expr)函數,求取指定列的平均值。 distinct:去除重復的值。 all:所有值 expr:表達式,只能是數值類型 例:select avg(all productprice+100) from productinfo; 6.2求記錄數量函數 count(*|[distinct][all]expr)函數。該函數可以用來計算記錄的數量或某列的個數。指定列名,或*表示全選。 *:計算所有記錄 distinct:去重 all:所有的 expr:要計算的對象,通常是表的列 例:select count(dixtinct productprice) from productinfo where productprice < 3000; 6.3返回最大最小值函數 MAX([distinct|a]expr)函數。返回指定列中的最大值 例:select * from productinfo where productrice=(select max(productprice) from productinfo); MIN([distincr|all]expr)函數。返回指定列中的最小值 6.4求和函數 sum([distincr|all]expr)函數。該函數不同於count,它分組計算指定列的和。不使用分組,則默認整個表為一組。 例:select sum(all quantity),category from productinfo group by category; 7.其他函數: 7.1返回登錄名函數 user函數:返回當前會話的登錄名 select user from dual; 7.2返回回話以及上下文信息函數 userenv(paraameter)函數:返回當前回話的信息。 例:select userenv("isdba") from dual ; sys_context(namespace,parameter)函數:得到oracle已經創建的context,名為userenv的屬性對應值。 例:select sys_context(userenv,session_user) session_user from dual; 7.3表達式匹配函數 decode(expr,search,result[,search1,result][,default])函數:當expr符合條件search時就返回result的值,類似swith-cash 例:select productname,quantity,decode(sign(quantity-100),1,充足,-1,不足,0,不足) from productinfo;

oracle的內置函數