熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

數據庫手冊:速查Oracle函數列表

2013-11-13 15:37:21  來源: Oracle 

  PL/SQL單行函數和組函數詳解
  
  函數是一種有零個或多個參數並且有一個返回值的程序在SQL中Oracle內建了一系列函數這些函數都可被稱為SQL或PL/SQL語句函數主要分為兩大類: 單行函數; 組函數
  
  本文將討論如何利用單行函數以及使用規則SQL中的單行函數
  
  SQL和PL/SQL中自帶很多類型的函數有字符數字日期轉換和混合型等多種函數用於處理單行數據因此這些都可被統稱為單行函數這些函數均可用於SELECTWHEREORDER BY等子句中例如下面的例子中就包含了TO_CHARUPPERSOUNDEX等單行函數
  
  SELECT enameTO_CHAR(hiredatedayDDMonYYYY)FROM empWhere UPPER(ename) Like AL%ORDER BY SOUNDEX(ename)
  
  單行函數也可以在其他語句中使用如update的SET子句INSERT的VALUES子句DELET的WHERE子句認證考試特別注意在SELECT語句中使用這些函數所以我們的注意力也集中在SELECT語句中
  
  NULL和單行函數
  
  在如何理解NULL上開始是很困難的就算是一個很有經驗的人依然對此感到困惑NULL值表示一個未知數據或者一個空值算術操作符的任何一個操作數為NULL值結果均為提個NULL值這個規則也適合很多函數只有CONCATDECODEDUMPNVLREPLACE在調用了NULL參數時能夠返回非NULL值在這些中NVL函數時最重要的因為他能直接處理NULL值NVL有兩個參數:NVL(xx)x和x都式表達式當x為null時返回X否則返回x
  
  下面我們看看emp數據表它包含了薪水獎金兩項需要計算總的補償
  
  column name emp_id salary bonuskey type pk nulls/unique nnu nnfk table datatype number number numberlength
  
  不是簡單的將薪水和獎金加起來就可以了如果某一行是null值那麼結果就將是null比如下面的例子:
  
  update empset salary=(salary+bonus)*
  
  這個語句中雇員的工資和獎金都將更新為一個新的值但是如果沒有獎金即 salary + null那麼就會得出錯誤的結論這個時候就要使用nvl函數來排除null值的影響
  
  所以正確的語句是:
  
  update empset salary=(salary+nvl(bonus)*
  
  單行字符串函數
  
  單行字符串函數用於操作字符串數據他們大多數有一個或多個參數其中絕大多數返回字符串
  
  ASCII()
  
  c是一字符串返回c第一個字母的ASCII碼他的逆函數是CHR()
  
  SELECT ASCII(A) BIG_AASCII(z) BIG_z FROM empBIG_A BIG_z
  
  CHR()[NCHAR_CS]
  
  i是一個數字函數返回十進制表示的字符
  
  select CHR()CHR()CHR() FROM empCHR CHR CHRA z B
  
  CONCAT()
  
  cc均為字符串函數將c連接到c的後面如果c為null將返回c如果c為null則返回c如果cc都為null則返回null他和操作符||返回的結果相同
  
  select concat(slobo Svoboda) username from dualusernameslobo Syoboda
  
  INITCAP()
  
  c為一字符串函數將每個單詞的第一個字母大寫其它字母小寫返回單詞由空格控制字符標點符號限制
  
  select INITCAP(venivedivici) Ceasar from dualCeasarVeniVediVici
  
  INSTR([[]])
  
  cc均為字符串ij為整數函數返回c在c中第j次出現的位置搜索從c的第i個字符開始當沒有發現需要的字符時返回如果i為負數那麼搜索將從右到左進行但是位置的計算還是從左到右i和j的缺省值為
  
  select INSTR(Mississippii) from dualINSTR(MISSISSIPPII)select INSTR(Mississippii) from dualINSTR(MISSISSIPPII)
  
  INSTRB([i[j])
  
  與INSTR()函數一樣只是他返回的是字節對於單字節INSTRB()等於INSTR()
  
  LENGTH()
  
  c為字符串返回c的長度如果c為null那麼將返回null值
  
  select LENGTH(Ipso Facto) ergo from dualergo
  
  LENGTHb()
  
  與LENGTH()一樣返回字節
  
  lower()
  
  返回c的小寫字符經常出現在where子串中
  
  select LOWER(colorname) from itemdetail WHERE LOWER(colorname) LIKE %white%COLORNAMEWinterwhite
  
  LPAD([])
  
  cc均為字符串i為整數在c的左側用c字符串補足致長度i可多次重復如果i小於c的長度那麼只返回i那麼長的c字符其他的將被截去c的缺省值為單空格參見RPAD
  
  select LPAD(answer) paddedanswer unpadded from question;PADDED UNPADDED Yes YesNO NOMaybe maybe
  
  LTRIM()
  
  把c中最左邊的字符去掉使其第一個字符不在c如果沒有c那麼c就不會改變
  
  select LTRIM(MississippiMis) from dualLTRppi
  
  RPAD([])
  
  在c的右側用c字符串補足致長度i可多次重復如果i小於c的長度那麼只返回i那麼長的c字符其他的將被截去c的缺省值為單空格其他與LPAD相似
  
  RTRIM()
  
  把c中最右邊的字符去掉使其第後一個字符不在c如果沒有c那麼c就不會改變
  
  REPLACE([])
  
  ccc都是字符串函數用c代替出現在c中的c後返回
  
  select REPLACE(uptownupdown) from dualREPLACEdowntown
  
  STBSTR([])
  
  c為一字符串ij為整數從c的第i位開始返回長度為j的子字符串如果j為空則直到串的尾部
  
  select SUBSTR(Message) from dualSUBSMess
  
  SUBSTRB([])
  
  與SUBSTR大致相同只是IJ是以字節計算
  
  SOUNDEX()
  
  返回與c發音相似的詞
  
  select SOUNDEX(dawes) Dawes SOUNDEX(daws) Daws SOUNDEX(dawson) from dualDawes Daws DawsonD D D
  
  TRANSLATE()
  
  將c中與c相同的字符以c代替
  
  select TRANSLATE(fumbleufar) test from dualTEXTramble
  
  TRIM([[]] from c)
  
  將c串中的第一個最後一個或者都刪除
  
  select TRIM( space padded ) trim from dual TRIMspace padded
  
  UPPER()
  
  返回c的大寫常出現where子串中
  
  select name from dual where UPPER(name) LIKE KI%NAMEKING
  
  單行數字函數
  
  單行數字函數操作數字數據執行數學和算術運算所有函數都有數字參數並返回數字值所有三角函數的操作數和值都是弧度而不是角度oracle沒有提供內建的弧度和角度的轉換函數
  
  ABS()
  
  返回n的絕對值
  
  ACOS()
  
  反余玄函數返回之間的數n表示弧度
  
  select ACOS() piACOS() ZERO FROM dualPI ZERO
  
  ASIN()
  
  反正玄函數返回n表示弧度
  
  ATAN()
  
  反正切函數返回n的反正切值n表示弧度
  
  CEIL()
  
  返回大於或等於n的最小整數
  
  COS()
  
  返回n的余玄值n為弧度
  
  COSH()
  
  返回n的雙曲余玄值n 為數字
  
  select COSH(<>) FROM dualCOSH()
  
  EXP()
  
  返回e的n次冪e=
  
  FLOOR()
  
  返回小於等於N的最大整數
  
  LN()
  
  返回N的自然對數N必須大於
  
  LOG()
  
  返回以n為底n的對數
  
  MOD()
  
  返回n除以n的余數
  
  POWER()
  
  返回n的n次方
  
  ROUND()
  
  返回捨入小數點右邊n位的n的值n的缺省值為這回將小數點最接近的整數如果n為負數就捨入到小數點左邊相應的位上n必須是整數
  
  select ROUND()ROUND() FROM dualROUND() ROUND()
  
  SIGN()
  
  如果n為負數返回如果n為正數返回如果n=返回
  
  SIN()
  
  返回n的正玄值n為弧度
  
  SINH()
  
  返回n的雙曲正玄值n為弧度
  
  SQRT()
  
  返回n的平方根n為弧度
  
  TAN()
  
  返回n的正切值n為弧度
  
  TANH()
  
  返回n的雙曲正切值n為弧度
  
  TRUNC()
  
  返回截尾到n位小數的n的值n缺省設置為當n為缺省設置時會將n截尾為整數如果n為負值就截尾在小數點左邊相應的位上
  
  單行日期函數
  
  單行日期函數操作DATA數據類型絕大多數都有DATA數據類型的參數絕大多數返回的也是DATA數據類型的值
  
  ADD_MONTHS()
  
  返回日期d加上i個月後的結果i可以使任意
From:http://tw.wingwit.com/Article/program/Oracle/201311/17021.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.