【ORACLE】SUBSTR関数で文字列の一部を切り取り・抽出するSQL


ここではORACLEデータベースのSQLで、SUBSTR関数を使って文字列の一部を切り取る方法を紹介します。

SUBSTR関数を使うことで、文字列を指定した位置から任意の文字数を取得することが出来ます。

SELECT文のサンプルは↓で多数紹介していますので参考にしてください。
>>【SQL】SELECT文の書き方:サンプル多数あり

SUBSTR関数の基本構文

SUBSTR関数は、文字列を指定した開始位置から、指定した文字数分を抽出します。

DECODE関数の基本文法は次の通りです。
列の値から、指定した開始位置から指定した文字数分の文字列を抽出します。

SUBSTR(列名,開始位置,抽出する文字数)

SUBSTR関数を使ったSQLサンプル

ここからは実際にSUBSTR関数を使ったSQLのサンプルを紹介します。

先頭からn文字を切り取りする方法

SUBSTR関数では、開始位置を1とすることで文字列の先頭から指定した文字数分を抽出することが出来ます。

次のSQLでは、COL1列の値を先頭から1文字を切り取っています。

--先頭の文字から1文字取得する場合
select SUBSTR(col1,1,1) FROM table1;

次のSQLでは、COL1列の値を先頭から3文字を切り取っています。

--先頭の文字から3文字取得する場合
select SUBSTR(col1,1,3) FROM table1;

n番目の文字から文字を切り取りする方法

SUBSTR関数では、開始位置を変更することで、文字列の途中から指定した文字数分の文字列を抽出することが出来ます。

次のSQLでは、COL1列の値を3番目から2文字切り取っています。

--3番目の文字から2文字取得する場合
select SUBSTR(col1,3,2) FROM table1;

次のSQLでは、COL1列の値を3番目から最後尾の文字まで切り取っています。

--3番目の文字から最後尾の文字まで取得する場合(mを省略します)select SUBSTR(col1,3) FROM table1;

後ろからn番目の文字を切り取りする方法

SUBSTR関数では、文字列の後ろから指定した文字数分の文字列を抽出することが出来ます。

次のSQLでは、COL1列の値を後ろから3文字目の値から最後尾の文字まで切り取っています。

--後ろから3番目の文字から最後尾の文字まで取得する場合
select SUBSTR(col1,-3) FROM table1;

WHERE句でSUBSTR関数を使う方法

SUBSTR関数はWHERE句でも使うことが出来ます。

次のSQLでは、COL1列の値から頭1文字を抽出し、’A’という文字列と一致するレコードのみを取得しています。

--WHERE句でSUBSTR関数を使う方法
select * FROM table1 WHERE SUBSTR(col1,1,1) = 'A';

まとめ

文字列の切り取りにはSUBSTR関数を使います。

引数の指定によって、切り取りする開始位置や文字数を指定することが出来ます。

この他にも、SELECT文には様々な機能や使い方があります。
詳しくは「【SQL】SELECT文の書き方:サンプル多数あり」で解説していますのでぜひ参考にしてください。