INSTR
構文
目的
INSTRファンクションは、stringのsubstringを検索します。検索操作では、一致する値が見つかるか、または検索するサブストリングがなくなるまで、substring引数と、stringに含まれる同じ長さのサブストリングを比較して等しいものを検索します。stringの中で逐次比較される各サブストリングは、その前に比較したサブストリングの最初の文字の1つ右(順方向検索)または左(逆方向検索)から始まります。substringと等しいサブストリングが見つかった場合は、そのサブストリングの先頭文字の位置を示す整数が戻されます。該当するサブストリングが見つからない場合は0(ゼロ)が戻されます。
-
positionは、Oracle Databaseが検索を開始するstringの文字の位置を示す0(ゼロ)以外の整数です。つまり、substringと比較する最初のサブストリングの先頭文字の位置です。positionが負の場合、Oracleはstringの終わりから逆方向にカウントし、結果位置から逆方向に検索します。 -
occurrenceは、stringの中で何番目に現れるsubstringを検索するかを示す整数です。occurrenceの値は正である必要があります。occurrenceが1より大きい場合は最初の一致では位置を戻さずに、occurrence番目の一致が見つかるまで、前述した方法でstringに含まれるサブストリングの逐次比較を続行します。
INSTRは、文字列の先頭文字の位置を1として、入力文字セットによって定義された文字の位置を受け入れ、それに該当する位置を戻します。INSTRBには、文字でなくバイトを使用します。INSTRCは、完全なUnicodeキャラクタを使用します。INSTR2は、UCS2コードポイントを使用します。INSTR4には、UCS4コード・ポイントを使用します。
stringは、CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBまたはNCLOBデータ型です。例外は、INSTRC、INSTR2およびINSTR4であり、これらでは、stringをCLOBおよびNCLOBのいずれにもできません。
substringは、CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBまたはNCLOBデータ型です。
戻り値のデータ型はNUMBERです。
positionおよびoccurrenceは、NUMBERデータ型か、または暗黙的にNUMBERに変換可能な任意のデータ型で、整数に変換できる必要があります。positionおよびoccurrenceのデフォルト値は1です。この場合、Oracleはstringの最初の文字から検索を開始します。検索対象はsubstringが最初に現れる位置です。戻り値は、positionの値にかかわらず、stringの先頭を基準にします。
関連項目:
-
文字長の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。
-
文字長の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。
-
暗黙的な変換の詳細は、表2-8を参照してください。
-
substring引数とstringのサブストリングを比較するためにINSTRファンクションで使用される照合を定義する照合決定ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
次の例では、文字列CORPORATE FLOORで文字列ORの検索を3番目の文字から開始します。文字列CORPORATE FLOORで2回目に現れるORの開始位置を戻します。
SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring"
FROM DUAL;
Instring
----------
14
次の例では、最後の文字から、最後から3番目の文字まで、つまりFLOORの最初のOまで逆方向にカウントします。次に、2回目に現れる「OR」を逆方向に検索し、2回目に現れるこの文字列が、検索文字列の2番目の文字で始まることを認識します。
SELECT INSTR('CORPORATE FLOOR','OR', -3, 2) "Reversed Instring"
FROM DUAL;
Reversed Instring
-----------------
2
次の例では、データベース文字セットがダブルバイトの場合を想定しています。
SELECT INSTRB('CORPORATE FLOOR','OR',5,2) "Instring in bytes"
FROM DUAL;
Instring in bytes
-----------------
27