"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > \"Harligt\" 및 \"Härligt\"가 MySQL에서 동일한 결과를 반환하는 이유는 무엇입니까? 데이터 정렬 및 문자 정규화 살펴보기.

\"Harligt\" 및 \"Härligt\"가 MySQL에서 동일한 결과를 반환하는 이유는 무엇입니까? 데이터 정렬 및 문자 정규화 살펴보기.

2024-11-09에 게시됨
검색:819

Why Does \

MySQL의 특수 문자 처리: 역설 설명

MySQL에서 'Å', 'ä', 'Ö'는 종종 결과 일관성에 관한 질문을 제기합니다. 예를 들어, 'Harligt'와 'Härligt'를 사용한 쿼리는 동일한 결과를 산출하므로 사용자는 당황하게 됩니다.

이 현상은 MySQL의 기본 데이터 정렬 설정, 특히 "utf8_general_ci" 및 "utf8_unicode_ci"에 기인합니다. 이러한 데이터 정렬은 스칸디나비아 문자를 포함한 특정 유니코드 문자를 영어 문자와 동일시하여 정규화합니다(예: "ä = A"). 이 정규화는 비교 작업 및 검색을 단순화하지만 특정 시나리오에서는 불편할 수 있습니다.

이 문제를 해결하려면 다음 옵션을 고려하십시오.

  • 다른 데이터 정렬 사용: "utf8_bin"과 같은 데이터 정렬은 특수 문자를 포함한 문자 값을 유지하지만 다른 작업에 영향을 미칠 수 있습니다.
  • 쿼리에서 데이터 정렬 지정: 기본 데이터 정렬을 재정의하려는 특정 쿼리의 경우 , 쿼리에 "COLLATE utf8_bin"을 추가합니다. 예:
select * from topics where name='Harligt' COLLATE utf8_bin;
  • 사용자 정의 데이터 정렬 생성: 위의 해결 방법 중 어느 것도 해당되지 않는 경우 요구 사항을 충족하려면 특정 요구 사항에 맞는 사용자 정의 데이터 정렬을 생성할 수 있습니다.

특수 문자의 정규화 없이는 MySQL에서 대소문자를 구분하지 않는 LIKE 작업을 수행할 수 없다는 점에 주목할 필요가 있습니다. 그러나 관련 토론은 여기에서 찾을 수 있습니다:

  • [“a” != “ä”인 대소문자를 구분하지 않는 MySQL 데이터 정렬 찾기](https://dba.stackexchange.com/questions/231116/ looking-for-case-insensitive-mysql-collation-where-a-a)
  • [utf8_bin 필드에 대한 MYSQL 대소문자 구분 검색](https://stackoverflow.com/questions/9704962/mysql-case-sensitive- utf8-bin-필드 검색)
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3