REGEXP_LIKE スカラー関数
REGEXP_LIKE スカラー関数は、ストリング内に正規表現パターンがあるかどうかを示すブール値を戻します。 この関数は、述部がサポートされる場合にのみ使用できます。
スキーマは SYSIBM です。
- source-string
- その中で検索が行われるストリングを指定する式。 この式は、組み込みの文字ストリング、グラフィック・ストリング、数値、ブール値、日時値のいずれかを戻す必要があります。数値、ブール値、または日時値は、関数の評価の前に VARCHAR に暗黙的にキャストされます。 文字ストリングは、FOR BIT DATA 属性を指定できません (SQLSTATE 42815)。
- pattern-expression
- 検索するパターンである正規表現ストリングを指定する式。 この式は、組み込みの文字ストリング、グラフィック・ストリング、数値、ブール値、日時値のいずれかを戻す必要があります。 数値、ブール値、または日時値は、関数の評価の前に VARCHAR に暗黙的にキャストされます。 CLOB または DBCLOB 式の長さは、VARCHAR または VARGRAPHIC データ・タイプの最大長を超えてはなりません。 文字ストリングは、FOR BIT DATA 属性を指定できません (SQLSTATE 42815)。
- start
- 検索が開始される source-string 内の位置を指定する式。 この式は、組み込みの文字ストリング、グラフィック・ストリング、ブール値、数値のいずれかを戻す必要があります。INTEGER タイプでない値は、関数の評価の前に INTEGER に暗黙的にキャストされます。 整数の値は 1 以上でなければなりません。OCTETS が指定され、ソース・ストリングがグラフィック・データである場合、整数の値は奇数でなければなりません (SQLSTATE 428GC)。start のデフォルト値は 1 です。開始位置に適用されるストリング単位については、CODEUNITS16、CODEUNITS32、または OCTETS のパラメーターに関する説明を参照してください。
- flags
- パターン・マッチングのさまざまな面を制御するフラグを指定する式。
この式は、FOR BIT DATA 属性を指定しない組み込み文字ストリングを返す必要があります (SQLSTATE 42815)。
1 つ以上の有効なフラグ値をストリングとして指定できますが、フラグ値の組み合わせが有効でなければなりません (SQLSTATE 2201T)。
空ストリングは、値 'c' と同じです。
デフォルトのフラグ値は 'c' です。
表 1. サポートされるフラグ値 フラグ値 説明 c マッチングで大/小文字を区別することを指定します。このフラグは、'c' または 'i' が指定されていない場合のデフォルト値です。 この値は、値 'i' と一緒には指定できません。 i マッチングで大/小文字を区別しないことを指定します。この値は、値 'c' と一緒には指定できません。 m 入力データに複数行含まれている可能性があることを指定します。 デフォルトでは、パターン内の「^」は入力ストリングの先頭のみと一致し、パターン内の「$」は入力ストリングの末尾のみと一致します。 このフラグを設定すると、「^」と「$」は、入力ストリング内の各行の先頭と末尾とも一致します。 n パターン内の「.」文字が、入力ストリング内の行終了文字と一致することを指定します。 デフォルトでは、パターン内の「.」文字は行終了文字と一致しません。 入力ストリング内の復帰と改行のペアが、単一行の終了文字として機能し、パターン内の単一の「.」と一致します。 s パターン内の「.」文字が、入力ストリング内の行終了文字と一致することを指定します。 この値は、値 'n' の同義語です。 x パターン内の空白文字を、エスケープされていない限り無視することを指定します。 - CODEUNITS16、CODEUNITS32、または OCTETS
- start 値のストリング単位を指定します。
- CODEUNITS16 は、start 値を 16 ビットの UTF-16 コード単位で表すよう指定します。
- CODEUNITS32 は、start 値を 32 ビットの UTF-32 コード単位で表すよう指定します。 これはデフォルトです。
- OCTETS は、開始値がバイト単位で表現されることを指定します。
ストリング単位が CODEUNITS16 または OCTETS として指定されており、ソース・ストリングのストリング単位が CODEUNITS32 である場合は、エラーが返されます (SQLSTATE 428GC)。
詳細については、『文字ストリング』の『組み込み関数のストリング単位』を参照してください。
結果
この関数の結果は BOOLEAN 値となります。パターン式が検出された場合、結果は真となります。 パターン式が検出されなかった場合、結果は偽となります。 引数のうちのいずれかの値が NULL である場合、結果は unknown となります。
例
- EMPLOYEE 表から、大/小文字の区別を考慮せずに、ラストネームのスペルが LUCCHESSI、LUCHESSI、または LUCHESI である従業員番号を選択します。
結果は、EMPNO 値「000110」の 1 行です。SELECT EMPNO FROM EMPLOYEE WHERE REGEXP_LIKE(LASTNAME,'luc+?hes+?i','i') - PRODUCT 表から、無効な製品 ID 値を選択します。
期待される形式は「nnn-nnn-nn」です。ここで、n は 0 から 9 までの数字です。
すべての製品 ID がパターンと一致するため、結果は 0 行です。SELECT PID FROM PRODUCT WHERE NOT REGEXP_LIKE(pid,'[0-9]{3}-[0-9]{3}-[0-9]{2}')
