REGEXP_INSTR

REGEXP_INSTR は、return_option 引数の値に応じて、一致したサブストリングの開始位置、または終了後の位置を戻します。

構文図を読む構文図をスキップする
>>-REGEXP_INSTR--(--source-string--,--pattern-expression-------->

>--+------------------------------------------------------------------------------+--)-><
   '-,--start--+----------------------------------------------------------------+-'      
               '-,--occurence--+----------------------------------------------+-'        
                               '-,--return-option--+------------------------+-'          
                                                   '-,--flags--+----------+-'            
                                                               '-,--group-'              

source-string
その中で検索が行われるストリングを指定する式。 式は、組み込み文字ストリング、グラフィック・ストリング、数値、日時のいずれかのデータ・タイプの値を戻す必要があります。 値が UTF-16 DBCLOB ではない場合、正規表現パターンを検索する前に、暗黙的に UTF-16 DBCLOB にキャストされます。 FOR BIT DATA 属性の文字ストリングと、バイナリー・ストリングはサポートされません。 ストリングの長さが 1 GB を超えてはなりません。
pattern-expression
検索パターンの正規表現ストリングを指定する式。 式は、組み込み文字ストリング、グラフィック・ストリング、数値、日時のいずれかのデータ・タイプの値を戻す必要があります。 値が UTF-16 DBCLOB ではない場合、正規表現パターンを検索する前に、暗黙的に UTF-16 DBCLOB にキャストされます。 FOR BIT DATA 属性の文字ストリングと、バイナリー・ストリングはサポートされません。 ストリングの長さが 32K を超えてはなりません。

有効な pattern-expression は、検索のパターンを記述する文字および制御文字のセットで構成されます。 有効な制御文字の説明については、正規表現の制御文字 を参照してください。

start
検索が開始される source-string 内の位置を指定する式。 式は任意の組み込み数値、文字ストリング、またはグラフィック・ストリングのデータ・タイプの値を戻す必要があります。 引数は、関数を評価する前に INTEGER にキャストされます。INTEGER への変換について詳しくは、INTEGER または INTを参照してください。 整数の値は、1 以上でなければなりません。 整数の値が source-string の実際の長さより大きい場合、結果は 0 になります。
occurrence
source-string での pattern-expression のどのオカレンスを検索するかを指定する式。 式は任意の組み込み数値、文字ストリング、またはグラフィック・ストリングのデータ・タイプの値を戻す必要があります。 引数は、関数を評価する前に INTEGER にキャストされます。INTEGER への変換について詳しくは、INTEGER または INTを参照してください。整数の値は、1 以上でなければなりません。 occurrence が指定されない場合、デフォルト値は 1 で、pattern-expression の最初のオカレンスのみが考慮されることを示します。
return-option
パターンに一致したストリングの開始位置を戻すか、終了後の位置を戻すかを指定する式。 式は任意の組み込み数値、文字ストリング、またはグラフィック・ストリングのデータ・タイプの値を戻す必要があります。 引数は、関数を評価する前に INTEGER にキャストされます。INTEGER への変換について詳しくは、INTEGER または INTを参照してください。整数の値は、0 または 1 でなければなりません。 値 0 は、そのオカレンスの開始位置を戻します。 値 1 は、そのオカレンスの終了位置を戻します。 return-option が指定されない場合、デフォルト値は 0 になります。
flags
パターン・マッチングの特性を制御するフラグを指定する式。式は、組み込み文字ストリングまたはグラフィック・ストリングのいずれかのデータ・タイプの値を戻す必要があります。FOR BIT DATA 属性の文字ストリングと、バイナリー・ストリングはサポートされません。 このストリングには、1 つ以上の有効なフラグ値を含めることができます。 フラグ値の組み合わせは有効でなければなりません。 空ストリングは、値「c」と同じです。

有効なフラグ文字の説明については、正規表現のフラグ値 を参照してください。

group
source-string 内の戻す位置を決定するために pattern-expression のどのキャプチャー・グループを使用するかを指定する式。 式は任意の組み込み数値、文字ストリング、またはグラフィック・ストリングのデータ・タイプの値を戻す必要があります。 引数は、関数を評価する前に INTEGER にキャストされます。INTEGER への変換について詳しくは、INTEGER または INTを参照してください。整数の値は、0 以上でなければならず、pattern-expression 内のキャプチャー・グループの数より大きくてはなりません。 group を指定しない場合、デフォルトは 0 で、パターン全体と一致するストリング全体が戻されることを示します。

この関数の結果は長精度整数になります。 pattern-expression が見つかった場合、結果は 1 から n の数値です。 n は、source-string の実際の長さ + 1 です。結果値は、関数の処理に使用される位置を表します。 pattern-expression が見つからず、どの引数も NULL でない場合、結果は 0 になります。

REGEXP_INSTR 関数の引数のいずれかが NULL になる可能性がある場合、結果も NULL になる可能性があります。引数のいずれかが NULL の場合、その結果は NULL 値です。

前提条件: REGEXP_INSTR 関数を使用するには、 International Components for Unicode (ICU) オプションがインストールされていなければなりません。

処理: 正規表現の処理は、 International Components for Unicode (ICU) 正規表現インターフェースを使用して行われます。 詳しくは、http://userguide.icu-project.org/strings/regexp を参照してください。

  • 例 1: 文字の後に 'o' がある最初のオカレンスを検索します。
    SELECT REGEXP_INSTR('hello to you', '.o',1,1) 
    FROM sysibm.sysdummy1
    結果は 4 です。これは、2 番目の 'l' の文字の位置です。
  • 例 2: 文字の後に 'o' がある 2 番目のオカレンスを検索します。
    SELECT REGEXP_INSTR('hello to you', '.o',1,2) 
    FROM sysibm.sysdummy1
    結果は 7 です。これは、文字 't' の位置です。
  • 例 3: 大/小文字を区別しない一致を使用して、正規表現 '(.o).' の最初のキャプチャー・グループで 3 番目のオカレンスの後の位置を検索します。
    SELECT REGEXP_INSTR('hello to you', '(.o).', 1,3,1,'i',1) 
    FROM sysibm.sysdummy1
    結果は 12 です。これは、ストリングの末尾にある文字 'u' の位置です。