単一行関数の使用

単一行関数を使用して出力をカスタマイズする

Oracle SQLは、さまざまなタスクに使用できる組み込み関数の豊富なライブラリを提供します。関数の基本的な機能は、文字列の大文字と小文字の変換、文字列内または部分文字列の演算、数値データの数学的計算、および日付型の値の日付演算です。SQL関数は、オプションでユーザーから引数を受け取り、強制的に値を返します。

より広いカテゴリでは、2つのタイプの関数があります:-

Single Row functions-単一行関数は、単一行で機能し、行ごとに1つの出力を返す関数です。たとえば、長さと大文字小文字の変換関数は単一行関数です。

Multiple Row functions -複数の行関数が行のグループに対して機能し、行の完全なセットに対して1つの結果を返します。これらはグループ関数とも呼ばれます。

単一行関数

単一行関数には、文字関数、数値関数、日付関数、および変換関数を使用できます。これらの関数は、データ項目を操作するために使用されることに注意してください。これらの関数は1つ以上の入力引数を必要とし、各行を操作するため、行ごとに1つの出力値を返します。引数は、列、リテラル、または式にすることができます。単一行関数は、SELECTステートメント、WHERE、およびORDERBY句で使用できます。単一行関数は次のようになります-

  • General functions-通常、NULL処理関数が含まれています。カテゴリの下の関数は、NVL、NVL2、NULLIF、COALESCE、CASE、DECODEです。

  • Case Conversion functions-文字入力を受け入れ、文字値を返します。カテゴリの下の関数は、UPPER、LOWER、およびINITCAPです。

    • UPPER関数は、文字列を大文字に変換します。

    • LOWER関数は、文字列を小文字に変換します。

    • INITCAP関数は、文字列の最初のアルファベットのみを大文字に変換します。

  • Character functions-文字入力を受け入れ、数値または文字値を返します。カテゴリの下の関数は、CONCAT、LENGTH、SUBSTR、INSTR、LPAD、RPAD、TRIM、およびREPLACEです。

    • CONCAT関数は、2つの文字列値を連結します。

    • LENGTH関数は、入力文字列の長さを返します。

    • SUBSTR関数は、指定された開始点から終了点までの文字列の一部を返します。

    • INSTR関数は、指定された文字列内の文字または文字列の数値位置を返します。

    • LPADおよびRPAD関数は、指定された文字列を特定の長さまで指定された文字で埋めます。

    • TRIM関数は、文字列入力を最初または最後からトリミングします。

    • REPLACE関数は、入力文字列の文字を指定された文字に置き換えます。

  • Date functions-日付算術演算は、日付または数値を返します。カテゴリの下の関数は、MONTHS_BETWEEN、ADD_MONTHS、NEXT_DAY、LAST_DAY、ROUND、およびTRUNCです。

    • MONTHS_BETWEEN関数は、2つの日付の間の月数を返します。

    • ADD_MONTHS関数は、入力日に「n」か月数を追加します。

    • NEXT_DAY関数は、指定された日付の翌日を返します。

    • LAST_DAY関数は、入力日の月の最終日を返します。

    • ROUNDおよびTRUNC関数は、日付値を丸めて切り捨てるために使用されます。

  • Number functions-数値入力を受け入れ、数値を返します。カテゴリの下の関数は、ROUND、TRUNC、およびMODです。

    • ROUNDおよびTRUNC関数は、数値を丸めて切り捨てるために使用されます。

    • MODは、2つの数値間の除算の余りを返すために使用されます。

イラスト

一般的な機能

以下のSELECTクエリは、NVL関数の使用法を示しています。

SELECT first_name, last_name, salary, NVL (commission_pct,0) 
FROM employees
WHERE rownum < 5;

FIRST_NAME           LAST_NAME                     SALARY NVL(COMMISSION_PCT,0)
-------------------- ------------------------- ---------- ---------------------
Steven               King                           24000                     0
Neena                Kochhar                        17000                     0
Lex                  De Haan                        17000                     0
Alexander            Hunold                          9000                     0

ケース変換機能

以下のSELECTクエリは、ケース変換関数の使用法を示しています。

SELECT UPPER (first_name), INITCAP (last_name), LOWER (job_id)
FROM employees
WHERE rownum < 5;

UPPER(FIRST_NAME)    INITCAP(LAST_NAME)        LOWER(JOB_
-------------------- ------------------------- ----------
STEVEN               King                      ad_pres
NEENA                Kochhar                   ad_vp
LEX                  De Haan                   ad_vp
ALEXANDER            Hunold                    it_prog

文字機能

以下のSELECTクエリは、CONCAT関数を使用して2つの文字列値を連結する方法を示しています。

SELECT CONCAT (first_name, last_name) 
FROM employees
WHERE rownum < 5;

CONCAT(FIRST_NAME,LAST_NAME)
--------------------------------
EllenAbel
SundarAnde
MozheAtkinson
DavidAustin

以下のSELECTクエリは、SUBSTR関数とINSTR関数の使用法を示しています。SUBSTR関数は、入力文字列の1番目の位置から5番目の位置までの部分を返します。INSTR関数は、名の文字「a」の数値位置を返します。

SELECT SUBSTR (first_name,1,5), INSTR (first_name,'a')
FROM employees
WHERE rownum < 5;

SUBST INSTR(FIRST_NAME,'A')
----- ---------------------
Ellen                     0
Sunda                     5
Mozhe                     0
David                     2

以下のSELECTクエリは、LPADとRPADを使用して、従業員と仕事の情報をきれいに出力する方法を示しています。

SELECT RPAD(first_name,10,'_')||LPAD (job_id,15,'_')
FROM employees
WHERE rownum < 5;

RPAD(FIRST_NAME,10,'_')||
-------------------------
Steven____________AD_PRES
Neena_______________AD_VP
Lex_________________AD_VP
Alexander_________IT_PROG

数値関数

以下のSELECTクエリは、ROUND関数とTRUNC関数の使用法を示しています。

SELECT ROUND (1372.472,1)
FROM dual;

ROUND(1372.472,1)
-----------------
           1372.5

SELECT TRUNC (72183,-2)
FROM dual;

TRUNC(72183,-2)
---------------
          72100

日付算術演算

以下のSELECTクエリは、従業員の雇用日とsysdateの差分が行われる日付算術関数を示しています。

SELECT employee_id, (sysdate - hire_date) Employment_days
FROM employees
WHERE rownum < 5;

EMPLOYEE_ID EMPLOYMENT_DAYS
----------- ---------------
        100      3698.61877
        101      2871.61877
        102      4583.61877
        103      2767.61877

日付関数

以下のSELECTクエリは、MONTHS_BETWEEN、ADD_MONTHS、NEXT_DAY、およびLAST_DAY関数の使用法を示しています。

SELECT employee_id, MONTHS_BETWEEN (sysdate, hire_date) Employment_months
FROM employees
WHERE rownum < 5;

EMPLOYEE_ID EMPLOYMENT_MONTHS
----------- -----------------
        100        121.504216
        101        94.3751837
        102        150.633248
        103        90.9558289

SELECT ADD_MONTHS (sysdate, 5), NEXT_DAY (sysdate), LAST_DAY (sysdate)
FROM dual;

ADD_MONTH NEXT_DAY( LAST_DAY(
--------- --------- ---------
01-JAN-14 05-AUG-13 31-AUG-13