正規表現を使用して文字列とパターンマッチングしているか判別する

syntax

REGEXP_LIKE( string , pattern [, match] ) Oracle 10g
return [ boolean ]

parameter

string対象の文字列式
pattern正規表現パターン
match検索パラメータNLS_SORT 依存

return

  • 正規表現に一致すれば 「真」一致しなければ「偽」を戻す。

正規表現パターン

最大で 512 バイトまでの正規表現 ⇒ 正規表現パターン 参照
Perl による拡張表現 を使用する場合、例えば \d を指定したとき Perl では最長マッチになるが REGEXP_LIKE では 最短マッチ となる。

検索パラメータ

デフォルト値は大文字小文字の区別は NLS_SORT パラメータ 依存、それ以外は「設定なし」の状態となる。
'cimnx' のように複数のパラメータ指定できるが、競合する設定は左から右に向かって設定が上書きされる。

match_param検索方法
c大文字小文字を区別する(Case sensitive)
i大文字小文字を区別しない(case Insensitive [or Ignore])
m^$ メタ記号を各行の先頭と末尾に一致させる(Multiple lines)
nメタ記号のドット(.) を改行にも一致させる(Newline)
x空白を取り除いて評価する(eXcluding white-space?:Oracle 10g R2)

REGEXP_LIKE 関数の内容 (正規表現 ができる LIKE 条件)

文字列 string 中に 正規表現パターン文字列 pattern にパターンマッチする表現があれば TRUE、なければ FALSE となる。
REGEXP_LIKE の戻り値は LNNVL 関数 と同様 BOOLEAN 型であるため、基本的には WHERE 句 に記述する。
REGEXP_LIKE は「条件」という位置付けにある関数なので CASE 式 と併用して SELECT などの選択式に記述しても問題ないと思われる。

REGEXP_LIKE 使用例

JPのドメインであるかどうか調べる

SQL> select str, ptn,
  2           case when REGEXP_LIKE(str, ptn, 'i') then 'JPドメイン'
  3           else 'それ以外' end reg_like
  4    from regexp_like_sample;
 
STR                              PTN                  REG_LIKE
-------------------------------- -------------------- --------------------
example.com                      (\.jp$)              それ以外
example.net                      (\.jp$)              それ以外
example.co.jp                    (\.jp$)              JPドメイン
example.ne.jp                    (\.jp$)              JPドメイン
example.jp                       (\.jp$)              JPドメイン
ドメイン名例.JP                  (\.jp$)              JPドメイン

JPドメインにパターンマッチしたデータを抽出する

SQL> select str from regexp_like_sample where REGEXP_LIKE(str, ptn, 'i') ;
 
STR
--------------------------------
example.co.jp
example.ne.jp
example.jp
ドメイン名例.JP

PL/SQL による REGEXP_LIKE の使用例

SQL> declare
  2     vStr    varchar2(10);
  3  begin
  4     vStr := '首都東京';
  5     if (REGEXP_LIKE(vStr,'[京都]')) then
  6             dbms_output.put_line('文字列に京と都が含まれています');
  7     end if;
  8  end;
  9  /
文字列に京と都が含まれています


関連事項

SQL 関数 - REGEXP_LIKE 関連

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)