2009-08-10 4 views
1

나는 (내 버전 5.0) 경우 다른 문자열이 같은 것으로 간주되지만 같은 다른 규칙이있어없는 경우의 MySQL의 조합을 찾기 위해 노력하고있어 에.추가 규칙없이 대소 문자를 구분하지 않고 검색 하시겠습니까?</p> <p>등 =</p> <p>A :

나는 여기에 적절한 데이터 정렬을 찾으려고 노력했다 : http://www.collation-charts.org/mysql60/by-charset.html하지만 찾고있는 데이터 정렬이 존재하지 않는 것 같습니다.

SQL 쿼리에서 사용할 수 없습니다. SELECT ... WHERE lower (column1) = lower (column2) column1 및 column2 열의 인덱스가 사용되지 않아서 내 쿼리가 매우 느립니다.

의견을 보내 주셔서 감사합니다.

답변

1

나는 조언을 받았다. 단순히 id, word, word_in_lowercase와 같은 테이블을 가지고있다. 데이터가 중복된다는 것은 사실이지만 그렇지 않으면 내 모든 요구를 충족시킨다.

word_in_lowercase의 자동 업데이트는 트리거 또는 추가 프로그래밍을 통해 수행 될 수 있습니다.

+0

http://stackoverflow.com/questions/234591/upper-vs-lower-case/234751#234751에 따르면, 간단한 "소문자"비교는 몇몇 언어를 위해 정확하지 않을 수있다 – akavel

0

해당 테이블에 설정된 데이터 정렬 유형은 무엇입니까? 이 테이블은 대소 문자를 구별하지 않기 때문에 현재 많은 테이블을 사용하고 있습니다 (utf8_hungarian_ci).

+0

체코 어 언어가 필요하지만 중요한 것은 A = a 등등이지만 á는 A와 동일하지 않기 때문에 중요하지 않습니다. –

0

http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html은 이진이 아닌 문자열이 기본적으로 대/소문자를 구분하지 않음을 나타냅니다. lower()를 사용하지 않고 제대로 작동하지 않는지 테스트 했습니까?

+0

문자열이 비영가 인 경우 데이터 정렬을 설정해야하며 á = a와 같은 규칙을 원하지 않으면 질문은 어떤 데이터 정렬이어야합니다. –

+0

귀하의 요지를 봅니다. 이것이 기본 문자 집합에서 발생했다는 사실을 알지 못했습니다. – Cahlroisse

0

검색 쿼리에 MySQL의 전체 텍스트 검색 기능을 사용하지 않는 이유는 무엇입니까?

내가 좋아하는 태스크의 경우 MATCH AGAINST 기능을 사용하고 있습니다.

SELECT * FROM customer WHERE status = 1 AND MATCH (person, city, company, zipcode, tags) AGAINST ('".$searchstring."' IN BOOLEAN MODE) 

그리고 이것은 대소 문자를 구분하지 실행됩니다 : Link

한 가지 예를 -

는 명확하게하기 위해 mysql.com의 사양을 참조하십시오.

+0

나는 그것을 시도 할 것이다. 고맙습니다! –

+0

반갑습니다. 내가 시도하지 않은 유일한 방법은 mysql이 charactersrs를 "무시"하는 경우입니다. "a"와 "a"같은 acent. 경험을 공유하면 좋을 것입니다. ps. 당신의 받아 들여진 응답을 표시하는 것을 잊지 말라 ;-) – ChrisBenyamin

관련 문제