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

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

目次

前から検索 前から検索し最初の文字列の位置を取得する(InStr)
  InStr関数の引数が3つあるサンプル
  InStr関数の引数が4つあるサンプル

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

InStr(string , substring [, position [, occurrence ] ])
  • 引数のstringは検索元の文字列です。
  • 引数のsubstringは検索する文字列です。
  • 前から検索し、指定した文字が最初に見つかった位置を取得します。
  • 先頭の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行目は、全角のひらがなです。

InStr関数の引数が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

3つめの引数は検索開始位置です。
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

4つめの引数は発生した回数です。
1とした場合は、1回目にヒットした位置を返します。
2とした場合は、2回目にヒットした位置を返します。

関連の記事

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

△上に戻る