Oracle固有の関数等
日付
日付関数
- ADD_MONTHS( date , num )
- 日付date にnum ヶ月足した値を戻す。※加算される日付が月末日の場合、返される日付も加算された月の月末日になる。
- LAST_DAY( date )
- 指定した日付date の月の月末日を戻す。
- NEXT_DAY( date , char )
- 指定した日付date の次のchar 曜日を迎える日付を戻す。
- MONTHS_BETWEEN( date1 , date2 )
- 日付date1 とdate2 の間の月数を戻す。
- SYSDATE
- 現在の日時を戻す。
数値
数値関数
- ABS( num )
- num の絶対値を戻す。
- MOD( num1 , num2 )
- num1 をnum2 で割った余りを戻す。
- POWER( num1 , num2 )
- num1 をnum2 乗した値を戻す。
- SQRT( num )
- num の平方根を戻す。
- CEIL( num )
- num 以上の最も小さい整数を戻す。
- FLOOR( num )
- num 以下の最も大きい整数を戻す。
- ROUND( num1 , num2 )
- num1 を小数点以下num2 桁に四捨五入した値を返す。
- TRUNC( num1 , num2 )
- num1 を少数点以下num2 桁に切り捨てた値を戻す。
- BITAND( num1 , num2 )
- num1 と num2 の論理積の値を戻す。
文字
文字関数
- LENGTH( char )
- char の長さを文字数で戻す。
- INSTR( char1 , char2 , num1 , num2 )
- char1 のnum1 番目の文字からchar2 の探索を開始し、char2 がnum2 番目に現れる位置を戻す。
- SUBSTR( char , num1 , num2 )
- char のnum1 番目の文字からnum2 文字の長さの文字列を抜き出して戻す。
- CONCAT( char1 , char2 )
- 2つの文字列(char1 ,char2 )を1つに結合する。
- LPAD( char1 , num , char2 )
- num 桁になるようにchar1 の左にchar2 を埋める。
- RPAD( char1 , num , char2 )
- num 桁になるようにchar1 の右にchar2 を埋める。
文字変換関数
- INITCAP( char )
- 各単語の最初の文字を大文字、残りの文字を小文字にして戻す。
- UPPER( char )
- char 文字列を大文字にして戻す。
- LOWER( char )
- char 文字列を小文字にして戻す。
- TO_MULTI_BYTE( char )
- マルチバイト(全角)文字にして戻す。(注1)
- TO_SINGLE_BYTE( char )
- シングルバイト(半角)文字にして戻す。(注1)
注1:TO_MULTI_BYTE, TO_SINGLE_BYTE で相互に変換されるのは、アスキーコード(キャラクタセット:US7ASCII)のみである。日本語の半角カナは、マルチバイトに相当するため。変換されない。また、キャラクタセットが AL16UTF16 の場合(NCHAR, NVARCHAR2 項目)、UNICODE(UTF-16)であるためマルチバイトとして扱われる。
データ変換
変換関数
- TO_CHAR( 文字列|数値|日付 [,出力書式])
- 出力書式に従い文字列に変換する
- TO_DATE( 文字列 [,入力書式])
- 文字列を入力書式に従い日付に変換する
- TO_NUMBER( 文字列 [,入力書式])
- 文字列を入力書式に従い数値に変換する
- NUMTODSINTERVAL( 数値 , 'DAY'|'HOUR'|'MINUTE'|'SECOND' )
- 数値を指定された時間隔として期間リテラル(INTERVAL DAY TO SECOND)に変換する
- NUMTOYMINTERVAL( 数値 , 'YEAR'|'MONTH' )
- 数値を指定された時間隔として期間リテラル(INTERVAL YEAR TO MONTH)に変換する
- HEXTORAW( 文字列 )
- 16進数文字列をRAW値に変換
- RAWTOHEX( RAW値 )
- RAW値を16進数文字列に変換
- CHARTOROWID( 文字列 )
- ROWID文字列をROWID値に変換
- ROWIDTOCHAR( ROWID値 )
- ROWID値をROWID文字列に変換
書式指定
| 編集形式 | 内容 | 編集形式 | 内容 | |
|---|---|---|---|---|
| DD | 日(01-31) | FM | 空白埋めしない | |
| DDD | 年の通算日数(1-366) | 9 | 有効桁数編集 | |
| D | 週の通算日数(1-7) | 0 | 有効桁数編集(ゼロ埋め) | |
| DY | 曜日(日〜土) | G | 区切り表記 | |
| DAY | 曜日(日曜日〜土曜日) | D | 小数点表記 | |
| MM | 月(01-12) | L | ローカル通貨表記 | |
| MON | 月(JAN-DEC) | , | 指定した位置にカンマを戻す | |
| MONTH | 月(1月〜12月) | . | 指定した位置にピリオドを戻す | |
| YY | 年 西暦(下2桁) | |||
| YYYY | 年 西暦(4桁) | |||
| RR | 年(下2桁) | |||
| CC | 世紀 | |||
| HH (HH12) | 時 12時表記(01-12) | |||
| HH24 | 時 24時表記(00-23) | |||
| MI | 分(00-59) | |||
| SS | 秒(00-59) | |||
| SSSSS | 経過秒数(0-86399) |
その他
その他
- NVL( expr , val )
- expr の値がNULLの場合は、val を戻す。それ以外は、expr の値を戻す。
- NVL2( expr , val1 , val2 )
- expr の値がNULLの場合は、val2 を戻す。それ以外は、val1 の値を戻す。
- NULLIF( expr1 , expr2 )
- expr1 とexpr2 が等しい場合は、NULLを戻す。それ以外は、expr1 を戻す。
- COALESCE( expr , expr , …… , expr )
- リスト中でNULLでない最初のexpr の値を戻す。
- GREATEST( expr , expr , …… , expr )
- リスト中で最大値のexpr を戻す。
- LEAST( expr , expr , …… , expr )
- リスト中で最小値のexpr を戻す。
- DECODE( expr , val1 , rtn1 , val2 , rtn2 , …… [, else ] )
- expr の値がval1 と等しい場合は、rtn1 を戻す。どのvalとも一致しない場合は、else を戻す。
グループ関数
- COUNT( expr )
- NULL値を除いたexpr の行数を戻す。*を指定した場合はNULL値を含む行数を戻す。
- MAX( expr )
- NULL値を除いたexpr の最大値を戻す。
- MIN( expr )
- NULL値を除いたexpr の最小値を戻す。
- AVG( expr )
- NULL値を除いたexpr の平均値を戻す。
- SUM( expr )
- NULL値を除いたexpr の合計値を戻す。
その他(関数以外)
CASE式
CASE式の記述の仕方は、以下の2通りあります。
CASE "式"
WHEN "条件1" THEN "値1"
[ WHEN "条件2" THEN "値2" [...]]
[ ELSE "デフォルト値" ] END
"式"と"条件1"が一致すれば"値1"を返す、一致せず"条件2"が一致すれば"値2"を返す、…、すべての条件に一致しないもしくは"式"がNULLの場合は"デフォルト値"を返す。"デフォルト値"の設定がない場合は、NULLが返される。DECODE関数と同等の動きとなり、置き換えも可能である。
CASE WHEN "条件式1" THEN "値1" [ WHEN "条件式2" THEN "値2" [...]] [ ELSE "デフォルト値" ] END
"条件式1"の結果が真ならば"値1"を返す、偽で"条件式2"の結果が真ならば"値2"を返す、…、すべての式評価で偽になった場合は"デフォルト値"を返す。"デフォルト値"の設定がない場合は、NULLが返される。
擬似列
- ROWID
- 表の単一行を一意に識別する値
- ROWNUM
- 問合せで選択された単一行の位置
- USER
- ログインユーザ名
- UID
- ログインユーザID
但し、行を選択し、ROWNUM値を割り当てた後で、ORDER BY句のソートを実行するので注意!
最終更新時間:2008年11月14日 16時00分00秒 指摘や意見などあればSandBoxのBBSへ。