2013-06-07 16 views
5

Możliwe jest zanegowanie wzorca regex w Mysql? Wiem, że zwykle możemy zanegować wzorzec za pomocą ?!, ale to nie działa w Mysql.zanegować wzór regex w mysql

Co muszę osiągnąć, to zanegować wynik pasujący do jakiegoś binarnego, takiego jak .0.0..0., co oznacza, że ​​nie liczę, gdy sekundy, czwarty i siódmy to Zero. Nie mogę użyć NOT REGEX, ponieważ buduję procedurę mysql, która powinna być używana z innym warunkiem.

Każdy pomysł jest doceniany, wielkie dzięki.

Odpowiedz

13

Istnieje ogólne rozwiązanie prawie wszystko „negatywne regex” dopasowanie pytania: przekształcić go w pozytywnym problemu z dopasowaniem używając pewnej logiki.

Jest to zwykle łatwiejsze niż próba skonstruowania wyrażenia pasującego do "wszystkiego poza tym wzorcem".

W tym przypadku, to jest całkiem prosta:

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

to wygląda na dobre rozwiązanie. Spróbuję i wrócę. – bingjie2680

+1

Możesz także użyć 'not regexp'. [Patrz tutaj] (http://dev.mysql.com/doc/refman/5.6/en/regexp.html#operator_not-regexp). –

+0

Możesz także zrobić "NIE (jakiekolwiek wyrażenie)", więc również "NOT (nazwa kolumny" REGEXP ") również działa. – donut

0

można po prostu użyć NOT REGEX:

SELECT * FROM table 
WHERE column_name NOT REGEX '^your[[:space:]]pattern here' 

skradzione Erick Jimenez's comment. Myślę, że to lepsze niż dan1111's answer.

Można również wykonać NOT (any expression), więc również zadziała NOT (column_name REGEXP 'pattern').