|
|
|
|
メッセージ表示(DBMS_OUTPUT) |
|
DBMS_OUTPUT は、SQL*Plus にメッセージを表示します。PL/SQL プロックやストアドのデバッグに使用すると便利です。
メッセージを 1 行出力する
DBMS_OUTPUT.PUT_LINE('エラー件数は' || error_no || '件です。');
改行コードを出力する
DBMS_OUTPUT.NEW_LINE;
|
|
|
文字列の操作 |
|
文字をASCIIコードに変換する(ASCII)
ASCII(文字)
ASCIIコードを文字に変換する(CHR)
CHR(ASCIIコード) 。
文字列を連結する(CONCAT)
CONCAT(文字列, 文字列), ||演算子でも結合できます。
文字列の検索を行う(INSTR)
INSTR(検索対象文字列, 検索する文字列[,1から始まる検索開始位置[,ヒット回数]]
検索開始位置に負の値を指定した場合、検索対象文字列の後ろからカウントします。
ヒット回数を指定した場合、指定された回数目にヒットした位置が返ります。
文字列の長さを返す(LENGTH)
LENGTH(文字列)
マルチバイト文字も1文字としてカウントされます。
英字を小文字にして返す(LOWER)
LOWER(文字列)
文字列を大文字に変換する(UPPER)
UPPER(文字列)
文字列の左側を指定された文字列で埋める(LPAD)
LPAD(文字列, 調整後の文字列長, 文字列)
文字列長はバイト単位で指定します。
文字列の右側を指定された文字列で埋める(RPAD)
RPAD(文字列, 調整後の文字列長, 文字列)
文字列長はバイト単位で指定します。
文字列の左側の空白を除去する(LTRIM)
LTRIM(文字列)
文字列の右側の空白を除去する(RTRIM)
RTRIM(文字列)
文字列の置換を行う(REPLACE)
REPLACE(変換対象文字列, 置換前文字列, 置換後文字列)
指定した文字数分の文字列を抽出する(SUBSTR)
SUBSTR(文字列, 抽出開始位置, 抽出文字数)
マルチバイト文字も1文字としてカウントされます。
|
|
(文字列関数の使用例)
'list_a(50バイト)内にある "ABC" の数をカウントします。
Declare
list_a VARCHAR2(50) := 'XXXABCXXXXXABCXXXXXABCXXXXXXABCXXXXXXXXXABCXXXXABC';
cnt NUMBER(4) :=0;
a NUMBER(4);
Begin
LOOP
a := InStr(list_a, 'ABC');
If a > 0 Then
cnt := cnt + 1;
list_a := SUBSTR(list_a, a + 3, LENGTH(list_a) - a - 2);
ELSE
EXIT;
End IF;
END LOOP;
dbms_output.put_line ('ABC'は " || cnt || '個ありました'));
End; |
|
|
型変換 |
|
文字列をrowid型に変換する(CHARTOROWID)
chartorowid(文字列)
16進を含む文字列をraw型に変換する(HEXTORAW)
hextoraw(文字列)
raw値を16進で表した文字列に変換する(RAWTOHEX)
rawtohex(raw値)
rowidをvarchar2型に変換する(ROWIDTOCHAR)
rowidtochar(rowid値)
日付を文字列に変換する。その際、指定した書式を適応する(TO_CHAR)
to_char(日付, 日付書式)
例 st_date char(6);
hire_date DATE := SYSDATE;
st_date := TO_CHAR(hire_date, 'YYMMDD'); -- hire_dateをYYMMDD形式の文字列に変換する
数値を文字列に変換する。その際、指定した書式を適応する(TO_CHAR)
to_char(数値, 数値書式)
文字列日付に変換する。その際、指定した書式を適応する(TO_DATE)
to_date(文字列, 日付書式)
long、long raw値をlob型に変換する(TO_LOB)
to_lob(long値)
シングルバイト文字列を対応するマルチバイト文字列に変換する(TO_MULTI_BYTE)
to_multi_byte(文字列)
文字列を数値に変換する。その際、指定した書式を適応する(TO_NUMBER)
to_number(文字列, 数値書式)
マルチバイト文字列を対応するシングルバイト文字列に変換する(TO_SINGLE_BYTE)
to_single_byte(文字列) |
|
|
SQL関数 |
|
最大の値を求める(MAX)
SELECT MAX(salary) FROM employee ;
最小の値を求める(MIN)
SELECT MIN(salary) FROM employee ;
平均値を求める(AVR)
SELECT AVG(salary) FROM employee ;
列の行数を数える(COUNT)
SELECT COUNT(employee_id) FROM employee ;
合計値を求める(SUM)
SELECT SUM(salary) FROM employee ;
(SQL関数の使用例)
-- 表EMPYOYEESから、MANAGER_ID ごとの平均給与(SALARY)を求めます。
Declare
CURSOR cur IS SELECT manager_id , AVG (salary) salary FROM employees GROUP
BY manager_id;
Begin
FOR employeesrec IN cur LOOP
dbms_output.put_line (employeesrec.manager_id || ' ' || employeesrec.salary);
END LOOP;
End;
|
|