2009-05-05 6 views
4

사용자 입력으로 검색되는 데이터베이스에 레코드가 있는데 처음에는 올바른 레코드를 찾는 데 충분했습니다.정규식을 사용하여 MySQL 쿼리로 레코드를 반환하려면 어떻게해야합니까?

"SELECT id FROM plants WHERE Flower LIKE '%" . $sanitizedUserInput . "%'" 

이 '단순히 전체 단어 모두 잘 작동 좋은,하지만 일이 자신의 Flower 필드에 순서대로 문자'레드 '와'레드 '지고 있다고 식물을 찾고, 같은 일이 시작하고,되지 않았습니다 빨간'.

나는 사용자 입력의 양쪽면에 공백을 넣기를 제안했지만 단어가 필드의 첫 단어이거나 마지막 단어가 실패하는 것으로 알고 있습니다. 나는 나 자신에게 내가 정규식을 사용해야한다고 생각했다. 단어 경계선이있는 단어를 검색합니다.

불행히도, 전 데이터베이스에서 정규식을 사용한 적이 없습니다. 정규 표현식으로 DB를 검색하는 쿼리를 어떻게 작성합니까? 다행히도 다음과 같이 쉽습니다.

"SELECT id FROM plants WHERE Flower REGEX `/\b" . $sanitizedUserInput . " \b/`" 

답변

7

예, 상당히 쉽습니다. MySQL의 정규 표현식에

MySQL Reference Manual - Regular Expressions

단어 경계 시퀀스 [[:<:]]하고 [[:>:]]은 그래서 당신은 같은 끝낼거야 : 나는 MySQL의 워드 프로세서 혼란을 찾을 어떤 이유

$query = "SELECT id ". 
      "FROM plants ". 
      "WHERE Flower REGEXP '[[:<:]]".$sanitizedUserInput."[[:>:]]'"; 
+1

.. – alex

+0

고마워요, 차드. +1 – alex

+0

정말요? 나는 전반적인 mysql 문서의 꽤 큰 팬이다. 검색 기능은 훌륭하지 않지만 대부분 올바른 페이지를 찾으면 대개 대부분의 페이지가 잘 작성됩니다. –

관련 문제