2013-06-07 2 views
5

MySQL의 정규식 패턴을 무효화 할 수 있습니까? 나는 보통 ?!을 사용하여 패턴을 무효화 할 수 있지만이 방법은 MySQL에서 작동하지 않는다는 것을 알고 있습니다.mysql에서 정규식 패턴을 부정 부호

내가 습득해야하는 것은 .0.0..0.과 같은 일부 바이너리와 일치하는 결과를 무효화하는 것입니다. 이는 두 번째, 네 번째 및 일곱 번째가 0 일 때 계산하지 않음을 의미합니다. NOT REGEX을 사용할 수 없습니다. mysql 프로 시저를 구축 중이므로 다른 조건과 함께 사용해야합니다.

어떤 생각이라도 고맙습니다.

답변

13

사용할 수 있습니다 어떤 논리를 사용하여 긍정적 인 일치하는 문제로 돌려가.

"대다수는이 패턴을 제외하고는"와 일치하는 정규식을 만드는 것보다 쉽습니다. 이 경우

, 즉 매우 간단합니다 : 당신은 그냥 NOT REGEX을 사용할 수 있습니다

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

:

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

도난을 Erick Jimenez's comment에서. 나는 그것이 dan1111's answer보다 낫다고 생각한다.

NOT (any expression)도 가능하므로 NOT (column_name REGEXP 'pattern')도 사용할 수 있습니다.