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)
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)