MariaDB-正規表現
MariaDBは、LIKE句から利用できるパターンマッチングに加えて、REGEXP演算子を介した正規表現ベースのマッチングを提供します。演算子は、指定されたパターンに基づいて文字列式のパターンマッチングを実行します。
MariaDB 10.0.5では、PCRE正規表現が導入されました。これにより、再帰パターン、先読みアサーションなどの領域へのマッチングの範囲が劇的に拡大します。
以下に示す標準のREGEXP演算子構文の使用を確認してください-
SELECT column FROM table_name WHERE column REGEXP '[PATTERN]';
REGEXPは、パターン一致の場合は1を返し、パターン一致がない場合は0を返します。
反対のオプションは、NOTREGEXPの形式で存在します。MariaDBは、互換性の理由で作成されたREGEXPとNOT REGEXP、RLIKEとNOTRLIKEの同義語も提供します。
比較されるパターンは、リテラル文字列またはテーブル列などの他のものにすることができます。文字列では、Cエスケープ構文を使用するため、「\」文字を2倍にします。REGEXPも、バイナリ文字列を除いて、大文字と小文字を区別しません。
使用できる可能なパターンの表を以下に示します。
シニア番号 | パターンと説明 |
---|---|
1 |
^ 文字列の先頭と一致します。 |
2 |
$ 文字列の終わりに一致します。 |
3 |
. 1文字に一致します。 |
4 |
[...] 角かっこ内の任意の文字と一致します。 |
5 |
[^...] 角かっこで囲まれていない文字と一致します。 |
6 |
p1|p2|p3 どのパターンにも一致します。 |
7 |
* 前の要素の0個以上のインスタンスに一致します。 |
8 |
+ 前の要素の1つ以上のインスタンスに一致します。 |
9 |
{n} 前の要素のn個のインスタンスと一致します。 |
10 |
{m,n} これは、前の要素のmからnのインスタンスに一致します。 |
以下に示すパターンマッチングの例を確認してください-
「pr」で始まる製品−
SELECT name FROM product_tbl WHERE name REGEXP '^pr';
「na」で終わる製品-
SELECT name FROM product_tbl WHERE name REGEXP 'na$';
母音で始まる商品−
SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';