Top/Oracle/単一行関数

Oracle/単一行関数 の変更点


*単一行関数 [#u4fee2c2]
  問合せの各行に対して単一の結果行を返す関数。給与を四捨五入など。
  これに対し、グループ関数は、問合せのグループ行に対して単一の結果を返す関数。全員の給与の合計など。
  関数はネストする事ができる。

*数値関数 [#ob5322cc]
|関数|説明|
|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 |

*文字関数 [#j4ab89da]
|関数|説明|
|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' |

*日付の演算 [#r20c2252]
(日付 + 数値)、(日付 - 数値)、(日付 - 日付)、(日付 + 数値/24)が可能。(日付 + 日付)は不可。

*日付関数 関数 説明 [#j8bfdf28]
|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を四捨五入して返す。デフォルトは日付。  |

*データ型変換 [#lc5205e9]
暗黙のデータ型変換には以下のものがある。
(VARCHAR2 or CHAR)から(NUMBER or DATE)。(NUMBER or DATE)から(VARCHAR2)。

*型変換関数 [#n00424fc]
|関数|説明|
|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書式の日付型にして返す。  |

*その他の関数 [#p007ac2b]
|関数|説明|
|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内の最小値を返す。  |

*数値書式 [#cc35d46d]
|要素|説明 |
|9|有効桁数を表す。0なら詰められる。 |
|0|先行ゼロを返す。0なら0表示される。 |
|$|$記号を返す。 |
|L|通貨記号を返す。NLS_CURRENCY |
|,(カンマ)|指定した位置にカンマを返す。 |
|.(ピリオド)|指定した位置にピリオドを返す。 |
|G|指定した位置にグループ区切文字を返す。NLS_NUMERIC_CHARACTERS |
|D|指定した位置にピリオドを返す。NLS_NUMERIC_CHARACTERS |

*日付書式 要素 説明 [#q88d366b]
|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|秒 |

ページ新規作成

新しいページはこちらから投稿できます。

TOP