2013-06-07 23 views
5

Có thể phủ nhận mẫu regex trong Mysql? Tôi biết rằng thông thường chúng ta có thể phủ nhận một mẫu bằng cách sử dụng ?!, nhưng điều này không hoạt động trong Mysql.phủ nhận mẫu regex trong mysql

Những gì tôi cần đạt được là phủ nhận kết quả khớp với một số nhị phân như .0.0..0., có nghĩa là không tính khi thứ hai, thứ tư và thứ bảy là số không. Tôi không thể sử dụng NOT REGEX, bởi vì tôi đang xây dựng thủ tục mysql, dự kiến ​​sẽ được sử dụng với điều kiện khác.

Bất kỳ ý tưởng nào được đánh giá cao, cảm ơn rất nhiều.

Trả lời

13

Có một giải pháp chung để gần như tất cả "regex tiêu cực" phù hợp với câu hỏi: biến nó thành một vấn đề kết hợp xác định sử dụng một số logic.

Điều này thường dễ hơn là cố gắng xây dựng một regex phù hợp với "mọi thứ nhưng mẫu này".

Trong trường hợp này, đó là khá đơn giản:

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

đây có vẻ là một giải pháp tốt. Tôi sẽ thử nó và quay lại. – bingjie2680

+1

Bạn cũng có thể sử dụng 'không regexp'. [Xem ở đây] (http://dev.mysql.com/doc/refman/5.6/en/regexp.html#operator_not-regexp). –

+0

Bạn cũng có thể làm 'NOT (bất kỳ biểu thức nào)' do đó 'NOT (column_name REGEXP 'pattern')' cũng hoạt động. – donut

0

Bạn chỉ có thể sử dụng NOT REGEX:

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

bị đánh cắp từ Erick Jimenez's comment. Tôi nghĩ nó tốt hơn dan1111's answer.

Bạn cũng có thể làm NOT (any expression) để NOT (column_name REGEXP 'pattern') cũng sẽ hoạt động.

Các vấn đề liên quan