2013-06-07 40 views
5

Mysqlの正規表現パターンを無効にすることはできますか?私は通常、?!を使用してパターンを無効にすることができますが、これはMysqlでは機能しません。mysqlの正規表現パターンを否定

私が達成する必要があるのは、.0.0..0.のようなバイナリと一致する結果を無効にすることです。つまり、2番目、4番目、7番目がゼロになるとカウントされません。 NOT REGEXを使用することはできません。これは、他の条件で使用する予定のmysqlプロシージャを作成しているためです。

何か考えていただければ幸いです。

答えて

13

を使用することができますいくつかのロジックを使用して正のマッチング問題にそれを回します。

これは、通常、「このパターン以外はすべて」と一致する正規表現を作成するよりも簡単です。この場合

、それは非常に簡単です:

select * from table 
    where column_name regex '[pattern]' = 0 
+0

これは良い解決策に見えます。私はそれを試して戻ってくるだろう。 – bingjie2680

+1

あなたは 'not regexp'を使うこともできます。 [ここをクリック](http://dev.mysql.com/doc/refman/5.6/en/regexp.html#operator_not-regexp) –

+0

'NOT(任意の式)'を実行することもできます。 'NOT(column_name REGEXP 'pattern')'も有効です。 – donut

1

あなたは、その列にFULLTEXTインデックスを追加し、質問に合致するほぼすべての「負の正規表現」への一般的な解決策はありBoolean Full-Text Searches

0

あなただけNOT REGEXを使用することができます。

Erick Jimenez's commentから盗ま
SELECT * FROM table 
WHERE column_name NOT REGEX '^your[[:space:]]pattern here' 

。私はそれがdan1111's answerより良いと思う。

NOT (any expression)でも可能ですので、NOT (column_name REGEXP 'pattern')でも動作します。