{{category Oracle,nolink}}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句のソートを実行するので注意!