0

次の表を検討してください。

mysql> select * from test;
+---------+
| col     |
+---------+
| ^test$  |
| tes$()t |
| X$%[    |
| test$   |
| ^test   |
| test    |
| [       |
+---------+
7 rows in set (0.04 sec)

有効なパターンと無効なパターンが含まれています。

私が行った場合 :

mysql> select * from test where 'test' regexp col;
+--------+
| col    |
+--------+
| ^test$ |
| test$  |
| ^test  |
| test   |
+--------+
4 rows in set (0.04 sec)

「test」に一致するパターンを持つすべての行を取得し、他のすべての行 (無効なパターンを含む) は無視されます。

ここで、無効なリクエストを直接行うと、パターン構文エラーが発生します。

mysql> select * from test where 'test' regexp '[';
ERROR 1139 (42000): Got error 'brackets ([ ]) not balanced' from regexp

MySQL にこれらのエラーを強制的に無視させる方法 (別のテーブルなし) はありますか (たとえば、空の結果が得られます)?

4

2 に答える 2

0
select * from test where 'test' like '[';
于 2012-10-31T11:26:38.413 に答える
0

わかりました、私は実用的な解決策を見つけました。それは難しいですが、うまくいきます:

SELECT * FROM test WHERE 'test' REGEXP RIGHT(CONCAT(col, '['), LENGTH('['));

「[」を正規表現パターンに置き換えます。顧客に正規表現の使用を許可する場合に役立つ場合があります。

于 2012-10-31T11:27:24.373 に答える