4.1 SQL関数の概要と単一行関数の基本
SQL関数(SQLファンクション)
Oracleデータベースに予め組み込まれている関数。
「単一行関数」と「グループ関数」に分類される。
単一行関数は、1件のデータごとに処理を行い、入力データごとに結果を1つ戻す関数。
グループ関数は、複数けんの入力データをグループ化して、集計処理を行った結果を1つだけ返す関数。
単一行関数の基本構文とタイプ
基本構文
関数名([引数1[,引数2...]])
引数には,定数,変数値,列名,式のいずれかを指定できる。
SELECT句以外にもWHERE句,ORDER BY句でも利用できる。
任意のレベルにネストできる。
単一行関数のタイプには文字関数,数値関数,日付関数,変換関数,汎用関数がある。
4.2 文字関数
UPPER関数
引数として受け入れた文字列を全て大文字にする。
UPPER(文字列)
LOWER関数
引数として受け入れた文字列を全て小文字にする。
LOWER(文字列)
INITCAP関数
引数として受け入れた文字列に含まれる「単語の先頭文字」を大文字にし,2文字目意向を小文字に変換する。
INITCAP(文字列)
CONCAT関数
引数として受け入れた2つの文字列を結合して戻す。連結演算子を使用して2つの文字列を結合した場合と同じ結果を戻す。
CONCAT(文字列1,文字列2)
※3つ以上の文字列は結合できない
SUBSTR関数
引数として受け入れた文字列のm番目の文字からn文字分の文字列を戻す。(部分文字列を戻す)
SUBSTR(文字列,m [,n] )
引数mに負の値を指定すると文字列の後ろから数えてm文字目からn文字分の文字列を戻す。
LENGTH関数
引数として受け入れた文字列の「文字数」を戻す。
LENGTH(文字列)
全角の文字や記号も1文字としてカウントする。
INSTR関数
指定した文字パターンが現れる位置を戻す。
INSTR(文字列1, 文字列2 [,m] [,n] )
文字列1のm文字目から文字列2を検索し,n回目に一致した文字列の位置を返す。
m,nが省略された場合のデフォルトは1
文字列の最後まで文字列2がみつからない場合は0を返す。
LPAD関数,RPAD関数
引数として受け入れた文字列がn文字になるように「埋め込み文字」を埋め込んで戻す。
LPAD(文字列,n,’埋め込み文字’)
RPA(文字列,n,’埋め込み文字’)
TRIM関数
引数として受け入れた文字列の前後にある削除文字(任意の1文字)を取り除いて戻す。
TRIM( [ LEADING | TRAILING | BOTH ] [ 削除文字] FROM 文字列)
TRIM(文字列)
削除文字が省略された場合は,半角スペースが取り除かれる。
削除文字に指定できるのは1文字だけで,複数の文字列は指定できない。
LEADING 文字列の先頭にある削除文字を削除する
TRAILING 文字列の末尾にある削除文字を削除する
BOTH 文字列の先頭と末尾にある削除文字を削除する。デフォルト。
REPLACE関数
引数として受け入れた文字列のうち,変更前文字列を変更後の文字列に置き換えた文字列を戻す
REPLACE(文字列,変更前文字列,[,変更後文字列])
変更後文字列が省略された場合は,文字列から変更前文字列を削除した文字列を戻す。
4.3 数値関数
数値関数は,引数として数値を受け入れ,数値を戻す関数。
ROUND関数
引数に指定された数値を小数点以下n桁に四捨五入して戻す。
ROUND(数値 [, n ])
引数nが省略された場合は整数値に四捨五入する。
負の値も指定できる。
TRUNC関数
引数に指定された数値を小数点以下n桁に切り捨てて戻す。
TRUNC(数値 [, n ])
引数nが省略された場合は整数値になるように切り捨てる。
負の値も指定できる。
MOD関数
引数nを引数mで割った余りを戻す。
MOD(n,m)
4.4 日付関数
日付値を引数として受け入れ,日付または数値を戻す関数。
日付値の基礎知識
・日付値は「世紀,年,月,日,時,分,秒」を表す内部的な数値書式で格納される。
・日付値にはデフォルトの表示形式がある。
・英語環境のデフォルトの表示書式は「DD-MON-RR」
・日本語環境のデフォルトの表示書式は 「RR-MM-DD」
・日付値に対して加算,減算などを行うことができる
日付値の計算
日付値に対して除算,乗算はできない。日付値同士を減算することはできるが,加算はできない。
日付値の加算,減算
日付+数値
日付-数値
日付値+数値/24,日付値-数値/24
日付値に「数値/24」を加算すると,指定した数値が時間数として加算される。
計算結果も日付値となる。
日付値+数値/24
日付値-数値/24
日付値-日付値
日付値から日付値を減算すると2つの日付値の間に経過した日数を戻す。
日付-日付
SYSDATE関数
現在の日付(日時)を戻す。引数は受け入れない。
SYSDATE
SYSDATE関数はデータベースサーバの現在の日時を戻す。
MONTH_BETWEEN関数
引数として受け入れた2つの日付間の月数を戻す。
MONTH_BETWEEN(日付1,日付2)
ADD_MONTH関数
引数に指定した日付のnヶ月後の日付を戻す。
ADD_MONTHS(日付,n)
引数nに負の値を指定するとnヶ月前の日付を戻す。
NEXT_DAY関数
引数に指定された「日付」の翌日以降に,指定された曜日になる最初の日付を戻す
NEXT_DAY(日付,’曜日’)
LAST_DAY関数
引数に指定された日付を含む月の,最終日を戻す関数
LAST_DAY(日付)
ROUND関数
引数に指定された日付値を四捨五入して戻す。
ROUND(日付[ ,’書式’ ])
書式
YEAR
指定した日付が6月30日以前の場合は,当年の1月1日午前0時,7月1日以降の場合は翌年の1月1日午前0時を戻す
MONTH
指定した日付が15日以前の場合は当月の1日午前0時,16日以降の場合は翌月の1日午前0時を戻す
DD
指定した日付が正午より前の場合は当日の午前0時,正午以降の場合は翌日の午前0時日付を戻す。
TRUNC関数
引数に指定された日付値を切り捨てて戻す。
TRUNC(日付 [, ’書式’])
書式
YEAR
当年の1月1日午前0時を戻す
MONTH
当月の1日午前0時を戻す
DD
当日の午前0時を戻す。デフォルト。