4.単一行関数

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時を戻す。デフォルト。