目的
source_stringのregexp_stringに一致する部分をreplace_stringで置換します。
REGEXP_SUBSTRは2個、3個、4個、5個または6個のパラメータをサポートします。
構文
- TD_SYSFNLIB.
- 関数が格納されているデータベースの名前。
- source_string
- 文字の引数。
- source_stringがNULLの場合はNULLが返されます。
- regexp_string
- 文字の引数。
- regexp_stringがNULLの場合はNULLが返されます。
- replace_string
- 文字の引数。
- replace_stringが指定されていないか、NULLまたは空の文字列の場合は、一致が結果から削除されます。
- replace_stringの最大後方参照数は9(\9など)です。replace_stringの9を超える後方参照は、後方参照とみなされます。
- position_arg
- 数値引数。
- position_argはsource_string内の、検索が開始される位置を指定します(デフォルトは1)。
- position_argが入力文字列より長い場合はNULLが返されます。
- position_argがNULLの場合、値NULLが使用されます。position_argが指定されていない場合は、デフォルト(1)が使用されます。
- occurrence_arg
- 数値引数。
- 発生を指定して、一致がreplace_stringと置換されるようにします。
- 値0を指定すると、すべての発生箇所が置き換えられます。
- 値が1を超えると、regexp_stringの最初の出現に続く最初の文字から、2番目の出現の検索が開始します。
- occurrence_argが見つかった一致数より大きい場合は、置換は実行されず、source_stringが返されます。
- occurrence_argがNULLの場合は、NULLの結果が返されます。occurrence_argが省略される場合、0がデフォルト値です。
- match_arg
文字の引数。
- 引数は複数の文字を含みます。引数の文字が有効でない場合、文字は無視されます。
- match_argが未指定、またはNULL、空の場合:
- 大文字と小文字を区別する一致。
- ピリオドは改行文字と一致しません。
- source_stringは単一行として扱われます。
- 'i' =大文字と小文字を区別しない一致。
- 'c' =大文字と小文字を区別する一致。
- 'n' =ピリオド(任意の文字と一致)は改行文字と一致できます。
- 'm' = source_stringは単一行ではなく、複数行として扱われます。このオプションを指定すると、'^'および'$'文字がsource_string全体ではなく、source_string内の各行に適用されます。
- 'l' = CLOBデータ型の場合、source_stringが現在のsource_stringの最大許可サイズ(現在は16 MB)を超えた場合に、エラーではなくNULLを返します。これは長時間実行する問合わせで、問合わせが失敗することになる長い文字列を使用したくない場合に役立ちます。このオプションはCLOBデータ型にのみ指定できます。
- 'x' = 空白を無視します。
REGEXP_SUBSTRは2個、3個、4個、5個または6個のパラメータをサポートします。
制約: 入力文字列内のNULL
REGEXP_REPLACEでは、ASCII Chr(0)、つまりNULLの処理で制約があります。ASCII Chr(0)を使用して2つの文字列を連結すると、REGEXP_REPLACEはその入力文字列を処理できません。例えば次のようなコードがあるとします。
sel TD_SYSFNLIB.RegExp_Replace ('a'||chr(0)||'bc', '[b]', 'X', 1, 0) AS
regex_rep_input_string;
関数は、入力文字列
'a'||chr(0)||'bc'内の
bを
Xと置換し、結果は
a Xcになるはずです。しかし、この制限により、結果は
aとなります。