文字列関数

[Oracle] 指定した文字列の位置を検索するSQL(INSTR)

文字列の位置を検索する

指定した文字列が最初に現れる位置を検索

文字列中の指定した文字列の位置を検索するにはINSTRを使用します。

まずは文字列が指定した文字列が一番最初に見つかった位置を取得する方法からご紹介します。

INSTR(文字列,検索文字列)

それではサンプルを見てみましょう。
以下のようなplayerテーブルがあります。

id name
1 tiny woods
2 tom blanco


name列の文字列中から、最初に現れる”o”の位置を取得するSQLです。

上記を実行し、抽出された結果がこちらです。

INSTR(name,’o’)
7
2


それぞれの文字列で、最初に見つかった”o”の位置が取得できているのがわかります。

 

検索範囲を指定して文字列が最初に現れる位置を検索

文字列の位置を検索する際に、検索する範囲を指定することもできます。

INSTR(文字列, 検索文字列, 検索範囲)

それではサンプルを見てみましょう。
以下のようなplayerテーブルがあります。

id name
1 tiny woods
2 tom blanco


name列の文字列において、3文字目以降で最初に現れる”o”の位置を取得するSQLです。

上記を実行し、抽出された結果がこちらです。

INSTR(name,’o’,3)
7
10


tom blancoの検索結果が、2文字目ではなく3文字目以降で最初に見つかった10となっているのがわかります。

 

文字列が現れる位置を指定して検索

検索結果が複数存在した場合に、何番目の結果を取得するかを指定することができます。

INSTR(文字列, 検索文字列, 検索範囲, 結果位置)

それではサンプルを見てみましょう。
以下のようなplayerテーブルがあります。

id name
1 tiny woods
2 tom blanco


name列の文字列において、”o”が2回目に現れる位置を取得するSQLです。

上記を実行し、抽出された結果がこちらです。

INSTR(name,’o’,1,2)
8
10


それぞれの文字列で、”o”が2回目に出現した位置を取得できているのがわかります。
 
 
以上が、指定した文字列の位置を検索する「INSTR」の使い方です。
ぜひ参考にしてみてください。