2012-07-27 5 views
-1

영어 및 헝가리어 텍스트가 포함 된 UTF-8로 인코딩 된 MySQL 데이터베이스가 있습니다.외래 문자에 대한 MySQL 정확한 검색

내가 검색 기능에서 일하고 있어요 그 결과는 한 가지를 제외하고 허용 :

포함하는 문자열에 대한 검색 "A", "E", "나", "O", "O", "ő", "ú", "ü", "ű"은 모든 사건을 나타내지 만 "a", "e", "i", "o", "u"에 대한 결과도 표시합니다. 이렇게하면 원하지 않는 많은 레코드가 만들어지기 때문에 검색이 정확하지 않을 것입니다. 예를 들어, "bár"에 대한 모든 "막대"(분명히 동일하지 않음)를 얻습니다.

나는 (그것이 전체 단어 검색 전용 또는 정확한 단어 순서에 대한 많은 변화를 가지고 있지만, 기본은 동일) 단순히 방법 등으로 검색을했다 :

SELECT * FROM table WHERE coloumn LIKE 'word' 

어떻게 나는 원치 않는 결과를 피할 수 있습니까? 저는 SQL 전문가가 아니며 이와 같은 검색을 한 적이 없기 때문에 약간의 도움이 필요합니다 ...

감사합니다!

+0

[이 질문] (http://stackoverflow.com/questions/9518681/which-mysql-collation-compares-ege-and-e-as-equal)을 확인하십시오 (아직 선택하지 않은 경우). . 그것은 해결책을 포함하지 않지만 여전히 도움이 될 수 있습니다. – Vatev

+0

나는 그것을 조사해 보았고, 모든 조합에서 언급 된 문자가 동일하다고 보았다 (á = a, é = e 등). 이 질문에 대한 누군가가이 [link] (http://dev.mysql.com/doc/refman/5.0/en/adding-collation.html)에 언급했습니다. 추가 된 데이터 정렬이 솔루션이 될까요? – PrincessOfSecret

답변

0

정말 확인이 작동하지 않습니다,하지만 당신은 직접 비교해야하고 값 1이 값 2의 하위 문자열 인 경우

POSITION(CAST(value1 as BINARY) IN CAST(value2 as BINARY)) 

확인할

CAST(value1 AS BINARY) = CAST(value2 AS BINARY) 

를 사용하여 시도 할 수 있습니다.
MySQL은 색인을 사용하지 않으므로 보통 WHERE 옆에 색인을 사용해야합니다.

+0

CAST : 'SELECT * FROM table where coloumn LIKE CAST ('word'AS BINARY ') 원하는 출현 만 찾으면 이제는 괜찮습니다. 감사합니다. – PrincessOfSecret

관련 문제