😊

【Oracle SQL】単一行関数について

2024/03/17に公開

Oracle SQLを触り始めた初心者です。
SQL関数についての簡単な復習と、Oracle SQLでよく使用する単一行関数をメモとして残します。

SQL関数とは

SQL関数(SQLファンクション)とは、Oracleデータベースにあらかじめ組み込まれている関数になります。関数は次のような操作に使用できます。

  • データに基づく計算
  • 個別のデータ項目の変更
  • 行のグループに対する出力操作
  • 日付及び数値の表示書式の設定
  • 列のデータ型の変換

SQL関数は引数を取ることがあり、必ず値を戻します。

SQLにおける「値を戻す」とは

SQLにおける「値を戻す」とは、関数が計算や操作の結果を出力することを指します。この出力された結果は、その後の処理で使用することができます。

例えば、UPPER関数は文字列を引数として受け取り、その文字列を全て大文字に変換した結果を「戻します」。この戻された結果は、SELECT文で表示したり、WHERE句で条件として使用したりすることができます。

UPPER関数を使用した例
SELECT UPPER(name)
FROM employees;

このSQL文では、employeesテーブルのname列の各行に対してUPPER関数が適用され、それぞれの名前が大文字に変換された結果が戻されます。この戻された結果がSELECT文によって表示されます。

「値を戻す」とは、関数が特定の操作の結果を出力し、その出力を後続の処理で使用できるようにすることを意味します。これはプログラミング言語における「戻り値」の概念と似ています。

2種類のSQL関数

関数には2種類あります。

  • 単一行関数
  • グループ関数
単一行関数

単一の行でのみ処理を行い、行ごとに1つの結果を戻します。

グループ関数

この関数は、行のグループを操作して、その行グループごとに1つの結果を戻します。
※ グループ関数については、また別の機会に記事にします。

単一行関数

単一行関数を使用して、データ項目を操作します。1つ以上の引数を受け入れ、問合せによって戻される行ごとに1つの値を戻します。次のいずれかを、引数として使用できます。

  • ユーザー指定の定数
  • 変数
  • 列名

単一行関数の特徴

  • 問合せで戻される行ごとに実行します。
  • 1行ごとに結果を1つ戻します。
  • 参照されるデータ型と異なる型のデータ値を戻す可能性があります。
  • 1つ以上の引数を受け入れる可能性があります。
  • SELECT、WHEREおよびORDER BY句で使用され、ネストされる可能性があります。
関数名 [(引数1,引数2、・・・)]

関数名 :   関数名
引数1,引数2 :関数で使用される引数。列名または式で表されることもある。

単一行関数の例

文字列関数

  • UPPER:
    引数として受け入れた文字列を全て大文字に変換します。
  • LOWER:
    引数として受け入れた文字列をすべて小文字に変換します。
  • INITCAP:
    引数として受け入れた文字列に含まれる単語の先頭文字を大文字に、2文字目以降を小文字に変換します。
  • CONCAT:
    引数として受け入れた2つの文字列を結合します。
  • SUBSTR:
    引数として受け入れた文字列のm番目の文字からn文字分の文字列を返します。
  • LENGTH:
    引数として受け入れた文字列の文字数を戻します。

数値関数

  • ROUND:
    引数に指定された数値を小数点n桁に四捨五入します。
  • TRUNC:
    引数に指定された数値を小数点nけたに切り捨てて戻します。
  • MOD:
    引数nを引数mで割った余りを戻します。

日付関数

  • SYSDATE:
    現在の日付(日時)を戻します。
  • MONTHS_BETWEEN:
    引数として受け入れた2つの日付間の月数を戻します。
  • ADD_MONTHS:
    引数に指定した日付のnヶ月後の日付を戻します。

参考

Oracle Database 10g 入門 SQL基礎Ⅰ

https://qiita.com/satoshi_199188/items/0de6e8a079583a81f87a
https://docs.oracle.com/cd/F19136_01/sqlrf/Single-Row-Functions.html#GUID-B93F789D-B486-49FF-B0CD-0C6181C5D85C

Discussion