Oracle SQL 文字列の位置を取得する(INSTR)

OracleのINSTRで、文字列の位置を取得するサンプルです。

目次

前から検索 前から検索し最初の文字列の位置を取得する(InStr)
  検索開始位置を指定(引数の3つ目)
  発生した回数(引数の4つ目)

前から検索し最初の文字列の位置を取得する(InStr)

InStr(文字列, 検索する文字)
  • 文字列の前から検索し、指定した文字が最初に見つかった位置を取得します。
  • 先頭の1文字目の位置は1です。
  • 引数のpositionは検索開始位置です。省略可能です。
  • 引数のoccurrence(発生)は、発生した回数です。2とした場合は、2回目にヒットした位置を返します。
  • 存在しないときは、0を返します。

InStr関数のサンプルです。

SELECT INSTR('abcabc','a') FROM DUAL; --1
SELECT INSTR('abcabc','b') FROM DUAL; --2
SELECT INSTR('abcabc','c') FROM DUAL; --3
SELECT INSTR('abcabc','abc') FROM DUAL; --1
SELECT INSTR('abcabc','z') FROM DUAL; --0

SELECT INSTR('あいうあいう','あ') FROM DUAL; --1
SELECT INSTR('あいうあいう','い') FROM DUAL; --2
SELECT INSTR('あいうあいう','う') FROM DUAL; --3

1~4行目は、前から検索し引数の文字列が最初に見つかった位置を返しています。
5行目は、該当の文字がないので0が返ります。
7~9行目は、全角のひらがなです。

検索開始位置を指定(引数の3つ目)

InStr(文字列, 検索する文字,検索開始位置)

3つめの引数は検索開始位置です。

SELECT INSTR('あいうあいう','あ',1) FROM DUAL; --1
SELECT INSTR('あいうあいう','あ',2) FROM DUAL; --4
SELECT INSTR('あいうあいう','あ',3) FROM DUAL; --4
SELECT INSTR('あいうあいう','あ',4) FROM DUAL; --4
SELECT INSTR('あいうあいう','あ',5) FROM DUAL; --0
SELECT INSTR('あいうあいう','あ',6) FROM DUAL; --0

1行目の引数は1で対象の文字列は(あいうあいう)です。位置の1が返ります。
2行目の引数は2で対象の文字列は(いうあいう)です。位置の4が返ります。
3行目の引数は3で対象の文字列は(うあいう)です。位置の4が返ります。
4行目の引数は4で対象の文字列は(あいう)です。位置の4が返ります。
5行目の引数は5で対象の文字列は(いう)です。文字(あ)はないので0です。
6行目の引数は6で対象の文字列は(う)です。文字(あ)はないので0です。

InStr関数の引数が4つあるサンプル

InStr(文字列, 検索する文字,検索開始位置,発生した回数)

4つめの引数は発生した回数です。

SELECT INSTR('あいうあいう','あ',1,1) FROM DUAL; --1
SELECT INSTR('あいうあいう','あ',1,2) FROM DUAL; --4

SELECT INSTR('あいうあいう','い',1,1) FROM DUAL; --2
SELECT INSTR('あいうあいう','い',1,2) FROM DUAL; --5

1とした場合は、1回目にヒットした位置を返します。
2とした場合は、2回目にヒットした位置を返します。

関連の記事

Oracle 文字列を操作するサンプル

△上に戻る