【SQL】ある文字列から指定した文字の位置を取得する方法


ここではORACLEデータベースのSQLで、ある文字列

SELECT文のサンプルは↓で多数紹介していますので参考にしてください。
>>【SQL】SELECT文の書き方:サンプル多数ありの中から指定した文字の位置を取得する方法を紹介します。

INSTR関数

ある文字列の値から指定した文字の位置を検索するには、INSTR関数を使います。

INSTR関数は、「INSTR(文字列1,文字列2,n,m)」と書いて使います。

引数の意味は次の通りです。
 文字列1:検索対象
 文字列2:検索する文字列
 n:検索開始位置
 m:検索する文字列がm番目に表れた位置を返す

文字列1から、文字列2の位置を取得します。その際、nで検索開始位置を、mで何番目にヒットした位置を返すか、指定することが出来ます。

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

いくつかのサンプルを通してINSTR関数の使い方を紹介します。

次のSQLでは、COLカラムの値から’a’の位置を取得しています。
n,mを省略すると1と同じ扱いになるので、先頭の先頭の文字から最初に現れる位置を取得することになります。

select INSTR(col1,'a') FROM table1;

次のSQLでは、COL1列の値の先頭の文字から’a’が2番目に現れる位置を取得しています。このときmは2を指定します。

select INSTR(col1,'a',1,2) FROM table1;

次のSQLでは、3番目の文字から’a’が最初に現れる位置を取得しています。
このときnは3を指定しています。

select INSTR(col1,'a',3,1) FROM table1;

次のSQLでは、3番目の文字から’a’が2番目に現れる位置を取得しています。nは3、mは2を指定します。

select INSTR(col1,'a',3,2) FROM table1;

まとめ

SQLである文字列から指定した文字の位置を取得するには、INSTR関数を使います。

INSTR関数は、「INSTR(文字列1,文字列2,n,m)」と書いて使います。nとmは省略すると1という扱いになります。

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