Oracle Database 指定した文字列の位置を取得する

Oracle Database 指定した文字列の位置を取得する

Oracle Databaseで、指定した文字列の位置を取得する手順を記述してます。「INSTR」で可能です。ここでは、実際に実行した結果を画像で掲載してます。

環境

  • OS windows11 home
  • Oracle Database 21c Express Edition
  • SQL Developer 21.2.1.204

手順

指定した文字列の位置を取得するには、「INSTR」を使用します。

INSTR( 文字列,位置を取得する文字列 )

実際に、指定した文字列の位置を取得してみます。
※「DUAL」テーブルはダミーとして使用できるテーブルです。

SELECT 
INSTR('hello', 'e'),
INSTR('hello', 'l'),
INSTR('hello', 'll')
FROM DUAL;

実行結果

取得されていることが確認できます。

文字列が存在しなければ「0」が返ります。

SELECT 
INSTR('hello', 'a')
FROM DUAL;

実行結果

開始位置を指定

検索を開始する位置を指定することもできます。

INSTR( 文字列,位置を取得する文字列,開始位置 )

位置を指定して、取得してみます。

SELECT 
INSTR('hello', 'l', 3),
INSTR('hello', 'l', 4)
FROM DUAL;

実行結果

何番目に出現するかを指定

何番目に出現した位置を取得することも可能です。

INSTR( 文字列,位置を取得する文字列,出現回数 )

実際に取得してみます。

SELECT 
INSTR('hello', 'l', 3, 2),
INSTR('helloworld', 'l', 3, 3)
FROM DUAL;

実行結果

全角空白も半角空白も、一文字としてカウントされます。

SELECT 
INSTR('hello world', 'l', 3, 3),
INSTR('hello world', 'l', 3, 3)
FROM DUAL;

実行結果

サロゲートペア文字

サロゲートペア文字を使用しても動作は同じです。

SELECT 
INSTR('😀😇😈😃😄', '😇')
FROM DUAL;

実行結果