Sql-certificate-using-single-row-functions
単一行関数の使用
単一行関数を使用して出力をカスタマイズする
Oracle SQLは、さまざまなタスクに使用できる組み込み関数の豊富なライブラリを提供します。 関数の本質的な機能は、文字列の大文字小文字変換、文字列内または部分文字列操作、数値データの数学計算、日付型値の日付操作です。 SQL関数は、オプションでユーザーから引数を取り、強制的に値を返します。
より広いカテゴリーには、2種類の関数があります。
単一行関数-単一行関数は、単一行で作業し、行ごとに1つの出力を返す関数です。 たとえば、長さと大文字と小文字の変換関数は単一行関数です。
複数行関数-複数行関数は行のグループに対して機能し、行の完全なセットに対して1つの結果を返します。 グループ関数とも呼ばれます。
単一行関数
単一行関数は、文字関数、数値関数、日付関数、および変換関数です。 これらの関数は、データ項目を操作するために使用されることに注意してください。 これらの関数は1つ以上の入力引数を必要とし、各行で動作するため、各行に1つの出力値が返されます。 引数は、列、リテラル、または式です。 単一行関数は、SELECTステートメント、WHERE句、ORDER BY句で使用できます。 単一行関数は-
- 一般関数-通常、NULL処理関数が含まれます。 このカテゴリの関数は、NVL、NVL2、NULLIF、COALESCE、CASE、DECODEです。
- ケース変換関数-文字入力を受け入れ、文字値を返します。 このカテゴリの機能は、UPPER、LOWER、およびINITCAPです。
- UPPER関数は、文字列を大文字に変換します。
- LOWER関数は、文字列を小文字に変換します。
- INITCAP関数は、文字列の最初のアルファベットのみを大文字に変換します。
- {ブランク}
- 文字関数-文字入力を受け入れ、数値または文字値を返します。 このカテゴリの関数は、CONCAT、LENGTH、SUBSTR、INSTR、LPAD、RPAD、TRIM、およびREPLACEです。
- CONCAT関数は、2つの文字列値を連結します。
- LENGTH関数は、入力文字列の長さを返します。
- SUBSTR関数は、指定された開始点から終了点までの文字列の一部を返します。
- INSTR関数は、指定された文字列内の文字または文字列の数値位置を返します。
- LPADおよびRPAD関数は、特定の文字で特定の文字列を特定の長さまで埋め込みます。
- TRIM関数は、文字列入力を開始または終了から切り取ります。
- REPLACE関数は、入力文字列の文字を特定の文字に置き換えます。
- 日付関数-日付算術演算は、日付または数値を返します。 このカテゴリの下の関数は、MONTHS_BETWEEN、ADD_MONTHS、NEXT_DAY、LAST_DAY、ROUND、およびTRUNCです。
- MONTHS_BETWEEN関数は、2つの日付間の月数を返します。
- ADD_MONTHS関数は、入力日付に「n」個の月を追加します。
- NEXT_DAY関数は、指定された日付の翌日を返します。
- LAST_DAY関数は、入力日付の月の最終日を返します。
- ROUNDおよびTRUNC関数は、日付値を丸めて切り捨てるために使用されます。
- 数値関数-数値入力を受け入れ、数値を返します。 このカテゴリの機能は、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