2009年9月21日月曜日

[ORACLE10g] SQL正規表現関数および条件


REGEXP_LIKE
---------------------------------------------------------------

ある文字列において特定パターンが検索されます。問合せのWHERE句でこの関数を使用すると、正規表現と一致する行が戻されます。条件は、制約内、またはブール値を戻すPL/SQLファンクションとしても有効です。
次のWHERE句では、StevenまたはStephenという名を持つ従業員がフィルタリングされます。WHERE REGEXP_LIKE(first_name, '^Ste(vph)en$')


REGEXP_REPLACE
---------------------------------------------------------------
文字列内の特定パターンが検索され、そのパターンの各出現箇所が指定した文字列と置き換えられます。
次の関数コールでは、country_name列の各文字の後に空白が1つ挿入されます。REGEXP_REPLACE(country_name, '(.)', '\1 ')


REGEXP_INSTR
---------------------------------------------------------------
正規表現パターン(サブストリング)の指定の出現箇所で文字列またはサブストリングが検索され、一致した文字列またはサブストリングの検出位置を示す整数が戻されます。検索する出現箇所および検索開始位置を指定します。
次の関数コールでは、email列で有効な電子メール・アドレスのブール・テストが実行されます。REGEXP_INSTR(email, '\w+@\w+(\.\w+)+') > 0


REGEXP_SUBSTR
---------------------------------------------------------------
正規表現パターン(サブストリング)の指定の出現箇所で文字列またはサブストリングが検索され、サブストリング自体が戻されます。検索する出現箇所および検索開始位置を指定します。
次の関数コールでは、正規表現内の空白が無視され、xフラグを使用して最初の文字列が一致として処理されます。REGEXP_SUBSTR('oracle', 'o r a c l e', 1, 1, 'x')


REGEXP_COUNT
---------------------------------------------------------------
文字列でのパターンの出現回数が戻されます。文字列とパターンを指定します。開始位置と一致オプション(たとえば、cの大/小文字区別)も指定できます。
次の関数コールでは、文字列'Albert Einstein'における開始文字位置7からのe(Eではない)の出現回数(つまり1)が戻されます。REGEXP_COUNT('Albert Einstein', 'e', 7, 'c')

0 件のコメント:

コメントを投稿