2011-02-07 5 views
0

이 하나가 나를 죽이고 있습니다. 정규식을 가진 총 멍청한 사람입니다. 사이트 검색을 수행하고 입력 된 텍스트를 데이터베이스의 titles 열과 비교하려고합니다. 기본적으로 내가 정규식으로 달성하고자 LIKE '% word1 word2 word3 %'이지만 일부 문자열 variatons입니다. 예를 들어MySql 사용자 입력에서 검색 할 정규 표현식

:

SELECT * FROM 테이블 WHERE 잘

웍스 [AO] RD w '표제 REGEXP . 말과 병동을 찾습니다. 하지만 여러 단어를 원할 때는 아무 것도 반환하지 않습니다.

SELECT * 테이블 WHERE 표제 REGEXP 'w [AO] RD 초 [또는] ND [IO] RD 번째'I 워드 또는 두 번째 또는 세 번째 검색하지 않으려

LIKE와 대문자처럼 제목에 모두 넣고 싶습니다.

사용자가 입력 한 검색 문자열을 foreach에서 폭발적으로 생각하는 것은 단어별로 정규식 단어를 수행하지만 모든 유사어를 하나의 쿼리로 연결하는 방법을 알지 못합니다.

EDIT : utf8_unicode_ci 조합 표에서 검색하는 것을 잊어 버렸습니다. 그래서 정말로 [ccć] orak 유형의 검색을하려고합니다.

답변

2
SELECT * FROM table WHERE title REGEXP 'w[ao]rd|sec[or]nd|th[io]rd' 

편집 : "좋아 당신이 제목에 그 순서대로 모두를 할 수 있도록"

SELECT * FROM table WHERE title REGEXP 'w[ao]rd.*sec[or]nd.*th[io]rd' 

이 그 단어 (그리고 변화)을 찾아 그들을 순서대로 될 수 있도록, 예를 들어

word blahblah second more blah third 
+0

감사 있도록, 그러나 이것은 OR을 수행하고, 내가하지 않습니다 말했다, 그렇게해야합니다. – Doktor83

+0

음, "where regexp '..'OR ...와 같은 다른 방법이 있습니다.하지만 OR 문법을 사용하는 것으로 귀결됩니다. 왜냐하면 ... 다른 말로하면" 이 OR이 모양을? "그 OR 구문 구문의 전체 지점입니다. –

+0

그래도 얻을,하지만이 tought이 하나의 정규식 코드에서 수행 할 수 있습니다. 그래서 기본적으로 '큰 빨간 사과'를 검색하면 나는 그것을 원하는 – Doktor83