更新日: 2020-02-15 (土) 13:27:21
単一行関数 †
問合せの各行に対して単一の結果行を返す関数。給与を四捨五入など。
これに対し、グループ関数は、問合せのグループ行に対して単一の結果を返す関数。全員の給与の合計など。
関数はネストする事ができる。
数値関数 †
関数 | 説明 |
CEIL(n) | n以上の最も小さい整数を返す ex) CEIL(9.1) = 10 |
FLOOR(n) | n以下の最も大きい整数を返す ex) FLOOR(9.9) = 9 |
MOD(m ,n) | mをnで割った余りを返す ex) MOD(5,2) = 1 |
POWER(m ,n) | mをn乗した値を返す ex) POWER(2,3) = 8 |
SQRT(n) | nの平方根を返す ex) SQRT(25) = 5 |
ROUND(m ,n) | mを小数点以下n桁に四捨五入した値を返す ex) ROUND(123.456 ,2) = 123.460 |
TRUNC(m ,n) | mを小数点以下n桁に切捨てした値を返す ex) TRUNC(654.321 ,-2) = 600.000 |
文字関数 †
関数 | 説明 |
LENGTH(char) | charの文字数を返す。LENGTHBはバイト数を返す ex) LENGTH('おらくる') = 4 |
INSTR(char1 ,char2 ,n ,m) | char1のn番目の文字からchar2の探索を開始し、 char2がm番目に見つかった位置を返す。n,m省略時は1となる。ex) INSTR('Oracle Master' ,'a' ,4 ,1) = 9 |
SUBSTR(char ,n ,m) | charのn番目からm文字分の文字列を返す。mは省略すると最後の文字まで。 nが負の場合はcharの終わりからの位置から処理する。ex) SUBSTR('Oracle Master' ,-10 ,6) = 'cle Ma' |
INITCAP(char) | charの各単語の最初の文字を大文字、残りの文字を小文字にして返す。空白・英数字以外の文字で区切られたものを単語とする。 INITCAP('oracle-MASTER') = 'Oracle-Master' |
UPPER(char) | charを大文字にして返す ex) UPPER('Oracle-Master') = 'ORACLE-MASTER' |
LOWER(char) | charを小文字にして返す ex) LOWER('Oracle-Master') = 'oracle-master' |
CONCAT(char1 ,char2) | char1とchar2を1つに結合して返す |
CONCAT('Oracle ' ,'Master') | = 'Oracle Master' |
LPAD(char1 ,n ,char2) | n桁になるようにchar1の左にchar2を埋めて返す ex) LPAD('Oracle' ,10 ,'-') = '----Oracle' |
RPAD(char1 ,n ,char2) | n桁になるようにchar1の右にchar2を埋めて返す ex) RPAD('Oracle' ,10 ,'*') = 'Oracle****' |
TRIM([LEADING|TRAILING|BOTH][char1 FROM] char2) | ex) char2の[先頭・最後・両方]からchar1を切り捨てる TRIM(BOTH '--' FROM '--Oracle--') = 'Oracle' |
REPLACE(char1 ,char2 [,char3]) | char1の中からchar2を探し、char3に置換する ex) REPLACE('おらくる Master' ,'おらくる' ,'Oracle') = 'Oracle Master' |
日付の演算 †
(日付 + 数値)、(日付 - 数値)、(日付 - 日付)、(日付 + 数値/24)が可能。(日付 + 日付)は不可。
日付関数 関数 説明 †
ADD_MONTHS(d ,n) | 日付dにnヶ月足した値を返す。月末の1ヶ月後は月末となる。 ex1) ADD_MONTHS('03-10-10' ,-1) = '03-09-10' ex2) ADD_MONTHS('03-10-31' ,-1) = '03-09-30' |
LAST_DAY(d) | 日付dの月の月末日を返す。 ex) LAST_DAY('03-10-10') = '03-10-31' |
NEXT_DAY(d ,char) | 次のchar曜日をの日付を返す。 ex) NEXT_DAY('03-10-19' ,'日曜日') = '03-10-26' |
MONTHS_BETWEEN(d1 ,d2) | 日付d1と日付d2の間の月数を返す。 ex) MONTHS_BETWEEN('03-01-10' ,'02-10-10') = -9 |
SYSDATE | 現在の日時を返す。ex) select SYSDATE from dual = 2003-10-10 15:10:38 |
TRUNC(d [,format]) | formatの単位に日付dを切り捨てて返す。デフォルトは日付。 ex) TRUNC(SYSDATE ,'MONTH') = 2003-10-01 00:00:00 |
ROUND(d [,format]) | formatの単位に日付dを四捨五入して返す。デフォルトは日付。 |
データ型変換 †
暗黙のデータ型変換には以下のものがある。
(VARCHAR2 or CHAR)から(NUMBER or DATE)。(NUMBER or DATE)から(VARCHAR2)。
型変換関数 †
関数 | 説明 |
TO_NUMBER(char [,format] [,nlsparams]) | charをformat書式のNUMBER型にして返す。L:通貨文字、G:グループ区切文字、D:小数点文字 ex) TO_NUMBER('\123,456.789' ,'L999G999D999') = 123456.789 |
TO_CHAR(n [,format] [,nlsparams]) | n(数値or日付)をformat書式のCHAR型にして返す。 ex) TO_CHAR(123456780,'L999,999,999') = \123,456.780 |
TO_DATE(char [,format] [,nlsparams]) | charをformat書式の日付型にして返す。 |
その他の関数 †
関数 | 説明 |
NVL(expr ,val) | exprの値がNULLであればvalを返す。NULL以外ならexprを返す。 |
NULLIF(expr1 ,expr2) | expr1とexpr2を比較して等しい場合はNULLを返す。 等しくない場合はexpr1を返す。 |
COALESCE(expr1 ,expr2,...exprn) | exprの中の最初のNULLでないexprを返す。ex) COALESCE(a ,b ,c)aがNULLでなければaを返し、aがNULLでbがNULLでなければbを返し、aもbもNULLでcがNULLでなければcを返す。 |
CASE 式 WHEN 条件1 THEN 値1 [WHEN 条件2 THEN 値2]... [ELSE デフォルト値] END | 式の値が条件1と一致する時は値1を返す。どれとも一致しない時はデフォルト値を返す。ELSE省略時はNULLを返す。※式、条件、値は同じデータ型である事。 |
DECODE(expr ,val1 ,rtn1 ,valn ,rtnn...rtnz) | exprの値がval1ならrtn1を返し、valnならrtnnを返す。 どれでもない場合はrtnzを返す。rtnz省略時はNULLを返す。 |
GREATEST(expr ,expr...) | expr内の最大値を返す。 |
LEAST(expr ,expr...) | expr内の最小値を返す。 |
数値書式 †
要素 | 説明 |
9 | 有効桁数を表す。0なら詰められる。 |
0 | 先行ゼロを返す。0なら0表示される。 |
$ | $記号を返す。 |
L | 通貨記号を返す。NLS_CURRENCY |
,(カンマ) | 指定した位置にカンマを返す。 |
.(ピリオド) | 指定した位置にピリオドを返す。 |
G | 指定した位置にグループ区切文字を返す。NLS_NUMERIC_CHARACTERS |
D | 指定した位置にピリオドを返す。NLS_NUMERIC_CHARACTERS |
日付書式 要素 説明 †
YYYY ,YYY ,YY ,Y | 西暦の下桁数分表示。 |
MONTH | 1月〜12月 |
MM | 01〜12 |
MON | JAN〜DEC |
DAY | 日曜日〜土曜日 |
DD | 01〜31 |
DY | 日〜土 |
D | 日=1...土=7 |
HH | 12時間表記 |
HH12 | 12時間表記 |
HH24 | 24時間表記 |
MI | 分 |
SS | 秒 |