2014-07-21 4 views
0

내 문제는 이것입니다. SQL 쿼리를 사용하여 문제가 발생했습니다. 예를 들어 다음과 같은 문이 필요합니다.SQL을 사용하여 쿼리 문자열의 문자를 일치 시키십시오.

SELECT * FROM {table} WHERE {table}.title LIKE '%term%'; 

여기서 용어는 검색어이며 테이블은 쿼리하는 테이블입니다. 이 문장은 거의 모든 경우에 잘 작동합니다. 쿼리 용어가 데이터베이스에있는 것보다 긴 경우 문제가 발생합니다. 예를 들면 :

(assuming there is an entry in {table} with title="foobar") 
    SELECT * FROM {table} WHERE {table}.title LIKE '%foobars%'; 

위 때문에 S의 푸바 = foobar와 일치하지 않습니다.

이 문제를 해결하려면 어떻게해야합니까?

감사합니다.

+0

시도 'LIKE'%의는 foobar의 % '를'당신이없는이 간단한 와일드 카드 검색을, 아무것도 할 수 없습니다 – Braj

+2

. "찾기"문자열이 DB에있는 문자열보다 길기 때문에 문자열이 실제로 DB에 존재하지 않습니다. –

+1

'SOUNDEX' 함수를 살펴 보길 원할 것입니다 : http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex –

답변

0

SQL에서는 을 사용할 수 있습니다. 역순으로 작동하지만 성능이 매우 느리기 때문에 조심해야합니다. 하지만 당신의 문제에 대한 당신이 시도해야합니다

(assuming there is an entry in {table} with title="foobar") 
SELECT * FROM {table} WHERE '%foobars%' LIKE CONCAT('%', {table}.title,'%'); 
관련 문제