2011-09-09 2 views
3

문자열의 단수 및 복수 버전에 대한 문자열을 검사하는 MySQL 정규 표현식을 수행하고자합니다.정규 표현식 추가/복수형을 대상에서 제거

특수 문자와 복잡한 문법 규칙을 무시하고 단순히 's'를 추가하거나 제거하고 싶습니다.

예를 들어 사용자가 '신발'을 입력하면 '신발'과 '신발'에 대한 일치가 반환됩니다. 반대로 사용자가 '신발'을 입력하면 '신발'과 '신발'모두를 반환해야합니다. 다음과 같이

나는 경기의 복수 버전에 대해 검사를 선택적으로 할 수 있어요 : 나는 양/음 예견에 대해 최대 읽거나 볼-뒤에 나는 끊임없이 쫓는 것 같다 된

WHERE Store.tags RLIKE ('(^|,)+[[:space:]]*shoe(s)*[[:space:]]*(,|$)+') 

내 꼬리. 당신은 당신의 요구 사항은 간단하게 ... 제거하거나 S를 추가하는 방법에 대한 요구하는지 잘 경우

+0

참조 http://stackoverflow.com/questions/3088433/sql-plural-singular-searches –

+0

불행히도 FULLTEXT는 쉼표로 구분 된 태그 목록 내에서 문자열을 일치시켜야하므로 문제가 될 수 있습니다. 또한 정규화를 사용하지 않을 것입니다. – Richard

+4

오, 그럼 ... 관계형 데이터베이스에 쉼표로 구분 된 목록을 저장하는 것은 좋지 않은 이유입니다 :) 호스트 언어 (Java, PHP 또는 기타)를 사용하여 단수/복수형을 사전 계산 한 적이 있습니까? 그런 다음 더 간단한 검색 표현식을 사용합니까? 간단한 'LIKE' 절도 사용할 수 있습니다! –

답변

0

... 마지막 편지가의 경우 예 경우

그냥 .. 확인 ->에 대한 제거 단수, 어떤 경우에는 충분히 좋은 ... 복수

이 도착하지만 당신 만의 확인 필요 보는 것처럼이 같은 바보입니다
WHERE (a LIKE '%shoes%' OR a LIKE '%shoe%') 

하나를 추가합니다.