REGEXP_SUBSTR スカラー関数
REGEXP_SUBSTR スカラー関数は、正規表現パターンに一致したストリング内のサブストリングの出現箇所を 1 つ戻します。
スキーマは SYSIBM です。
- ソース・ストリング
- その中で検索が行われるストリングを指定する式。 この式は、組み込みの文字ストリング、グラフィック・ストリング、数値、 ブール値、 または日時値を返す必要があります。 数値、ブール値、 または日時値は、関数が評価される前に暗黙的に VARCHAR にキャストされます。 文字ストリングは、FOR BIT DATA 属性を指定できません (SQLSTATE 42815)。 パターン式
- 検索するパターンである正規表現ストリングを指定する式。 この式は、組み込みの文字ストリング、グラフィック・ストリング、数値、 ブール値、 または日時値を返す必要があります。 数値、ブール値、 または日時値は、関数が評価される前に暗黙的に VARCHAR にキャストされます。 CLOB または DBCLOB 式の長さは、VARCHAR または VARGRAPHIC データ・タイプの最大長を超えてはなりません。 文字ストリングは、FOR BIT DATA 属性を指定できません (SQLSTATE 42815)。 start
- 検索が開始される source-string 内の位置を指定する式。 この式は、組み込みの文字ストリング、グラフィック・ストリング、 ブール値、 または数値を戻す必要があります。 INTEGER タイプでない値は、関数の評価の前に INTEGER に暗黙的にキャストされます。 整数の値は、1 以上でなければなりません。 OCTETS が指定され、ソース・ストリングがグラフィック・データである場合、整数の値は奇数でなければなりません (SQLSTATE 428GC)。 デフォルトの開始値は 1 です。 開始位置に適用されるストリング単位については、CODEUNITS16、CODEUNITS32、または OCTETS のパラメーターの説明を参照してください。 オカレンス (occurrence)
- 検索する source-string 内のパターン式の出現個所を指定する式。 この式は、組み込みの文字ストリング、グラフィック・ストリング、 ブール値、 または数値を戻す必要があります。 INTEGER タイプでない値は、関数の評価の前に INTEGER に暗黙的にキャストされます。 オカレンス値は 1 以上でなければなりません。 デフォルトのオカレンス値は 1 です。これは、パターン式の最初のオカレンスのみが考慮されることを示します。 ・フラグ
- パターン・マッチングのさまざまな面を制御するフラグを指定する式。 この式は、FOR BIT DATA 属性を指定しない組み込み文字ストリングを返す必要があります (SQLSTATE 42815)。 1 つ以上の有効なフラグ値をストリングとして指定できますが、フラグ値の組み合わせが有効でなければなりません (SQLSTATE 2201T)。 空ストリングは、値 'c' と同じです。 デフォルトのフラグ値は 'c' です。
表 1. サポートされるフラグ値 フラグ値 説明 c マッチングで大/小文字を区別することを指定します。 このフラグは、'c' または 'i' が指定されていない場合のデフォルト値です。 この値は、値 'i' と一緒には指定できません。 i マッチングで大/小文字を区別しないことを指定します。 この値は、値 'c' と一緒には指定できません。 m 入力データに複数行含まれている可能性があることを指定します。 デフォルトでは、パターン内の「^」は入力ストリングの先頭のみと一致し、パターン内の「$」は入力ストリングの末尾のみと一致します。 このフラグを設定すると、「^」と「$」は、入力ストリング内の各行の先頭と末尾とも一致します。 n パターン内の「.」 文字が、入力ストリング内の行終了文字と一致することを指定します。 デフォルトでは、パターン内の「.」 文字は行終了文字と一致しません。 入力ストリング内の復帰と改行のペアが、単一行の終了文字として機能し、パターン内の単一の「.」 と一致します。 s パターン内の「.」 文字が、入力ストリング内の行終了文字と一致することを指定します。 この値は、値 'n' の同義語です。 x パターン内の空白文字を、エスケープされていない限り無視することを指定します。 group - 戻すソース・ストリング内のパターン式のキャプチャー・グループを指定する式。 この式は、組み込みの文字ストリング、バイナリー・ストリング、グラフィック・ストリング、またはブール値を返す必要があります。 INTEGER タイプでない値は、関数の評価の前に INTEGER に暗黙的にキャストされます。 group の値は、0 以上でなければならず、パターン式のキャプチャー・グループの数を超えてはなりません (SQLSTATE 22546)。 group のデフォルト値は 0 です。これは、パターン全体と一致するストリングを返すことを表します。
- CODEUNITS16、CODEUNITS32、または OCTETS
- start 値のストリング単位を指定します。
- CODEUNITS16 は、start 値を 16 ビットの UTF-16 コード単位で表すよう指定します。
- CODEUNITS32 は、start 値を 32 ビットの UTF-32 コード単位で表すよう指定します。 これがデフォルトです。
- OCTETS は、開始値がバイト単位で表現されることを指定します。
ストリング単位が CODEUNITS16 または OCTETS として指定されており、ソース・ストリングのストリング単位が CODEUNITS32 である場合は、エラーが返されます (SQLSTATE 428GC)。
詳しくは、「 文字ストリング」の「組み込み関数のストリング単位」を参照してください。
結果
関数の結果はストリングです。 ストリングのデータ・タイプは、ソース・ストリングと同じデータ・タイプになります。ただし例外として、CHAR は VARCHAR に、GRAPHIC は VARGRAPHIC になります。 結果データ・タイプの長さ属性は、ソース・ストリングの長さ属性と同じになります。 結果の実際の長さは、パターン式と一致するストリング内の出現個所の長さです。 パターン式が検出されなかった場合、結果は NULL 値となります。
REGEXP_SUBSTR 関数の結果は NULL になる可能性があります。 引数のいずれかが NULL の場合、その結果は NULL 値です。
注
- 正規表現の処理は、International Components for Unicode (ICU) 正規表現インターフェースを使用して実行されます。
- 非 Unicode データベースに関する考慮事項:
- 正規表現パターンでは、半角の制御文字のみがサポートされます。パターン式引数には、文字ストリング・データ・タイプを使用してください。 ソース・ストリング引数でグラフィック・ストリング・データ・タイプを使用している場合でも、パターン式引数で文字ストリング・データ・タイプを使用できます。
- パターン式引数がグラフィック・ストリング・データ・タイプの場合、ソース・ストリング引数はグラフィック・ストリング・データ・タイプでなければなりません。
例
- 任意の文字とその直後の 'o' と一致するストリングを戻します。
結果は 'lo' になります。SELECT REGEXP_SUBSTR('hello to you', '.o',1,1) FROM sysibm.sysdummy1
- 任意の文字とその直後の 'o' と一致する、2 番目のストリングの出現個所を戻します。
結果は 'to' になります。SELECT REGEXP_SUBSTR('hello to you', '.o',1,2) FROM sysibm.sysdummy1
- 任意の文字とその直後の 'o' と一致する、3 番目のストリングの出現個所を戻します。
結果は 'yo' になります。SELECT REGEXP_SUBSTR('hello to you', '.o',1,3) FROM sysibm.sysdummy1