dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

mysqlの正規表現

2010-12-22 23:45:51 | linux
mysqlのregexpをいろいろ試してみました。

mysql> select 'abcd' regexp '(b|bc)';
+------------------------+
| 'abcd' regexp '(b|bc)' |
+------------------------+
| 1 |
+------------------------+
1 row in set (0.00 sec)


この↓表記方法だとエラーになります。
mysql> select 'abcd' regexp 'b(|c)';
ERROR 1139 (42000): Got error 'empty (sub)expression' from regexp

たぶん普通の文字列ならマッチしないであろう[.NUL.]を使えばエラーになりません。
メリットがあるかは別として。
mysql> select 'abcd' regexp 'b([.NUL.]|c)';
+------------------------------+
| 'abcd' regexp 'b([.NUL.]|c)' |
+------------------------------+
| 1 |
+------------------------------+
1 row in set (0.00 sec)