オーロラさんの勉強帳

IT企業勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。少しでもお役に立てたら幸いです。

【SQL】SUBSTR関数の使い方 (ORACLE DATABASE 12C SQL基礎)

ORACLE DATABASE 12c SQL基礎(1Z0-061)の試験範囲でもある、
SUBSTR関数の使用方法を紹介します。
f:id:auroralights:20210425194447p:plain

目次

SUBSTR関数の使い方

SUBSTR関数は引数で指定した文字データから指定した開始位置から指定した桁数の文字を抽出する関数です。

SUBSTR関数の書式

SUBSTR(文字データ,開始位置,取り出す文字数)

  • 「開始位置」に負の数字(-x)を指定した場合は、文字データの末尾から数えてx番目の文字から文字を取り出します。
  • 「開始位置」は1で始まります。0を指定した場合も1を指定したことになります。
  • 「取り出す文字数」は省略可能です。「取り出す文字数」を省略した場合は、開始位置からデータの最後の文字までを返します。

1.SUBSTR関数の使用例

開始位置、取り出す文字位置を指定した場合

SELECT SUBSTR('ORACLE 1Z0-061学習',2,4) FROM DUAL;

文字データ「ORACLE 1Z0-061学習」の2文字目「R」から4文字を取り出すので、「RACL」が返されます。

開始位置に1を指定した場合、0を指定した場合

SELECT SUBSTR('ORACLE 1Z0-061学習',1,6) FROM DUAL;
SELECT SUBSTR('ORACLE 1Z0-061学習',0,6) FROM DUAL;

開始位置に「0」を指定した場合も「1」を指定したとみなされるため、同じ結果が返ってきます。
「ORACLE 1Z0-061学習」の1文字目の「O」から6文字を取り出すので「ORACLE」が返されます。

取り出す文字数を省略した場合

SELECT SUBSTR('ORACLE 1Z0-061学習',8) FROM DUAL;

文字データ「ORACLE 1Z0-061学習」の8文字目から文字データの末尾まで取り出すので「1Z0-061学習」が返されます。

開始位置に負の値を指定した場合

SELECT SUBSTR('123456789',-5,3) FROM DUAL;
SELECT SUBSTR('123456789',-5) FROM DUAL;

末尾からマイナス5文字目から文字を取り出します。
f:id:auroralights:20210425194041p:plain

取り出す文字数を文字データの文字数以上指定した場合

SELECT SUBSTR('123456789',2,100) FROM DUAL;
SELECT SUBSTR('123456789',-2,100) FROM DUAL;

エラーになることはなく、文字データの末尾まで取り出すことができます。
f:id:auroralights:20210425194239p:plain