programing

MySQL은 Åäö를 AAO로 취급합니까?

telebox 2023. 10. 19. 22:15
반응형

MySQL은 Åäö를 AAO로 취급합니까?

이 두 개의 쿼리는 정확히 동일한 결과를 제공합니다.

select * from topics where name='Harligt';
select * from topics where name='Härligt';

이것이 어떻게 가능한 걸까요?검색할 때 mysql이 äö를 aao로 번역하는 것 같습니다.이걸 끌 방법이 없을까요?

저는 utf-8 인코딩을 어디서나 사용합니다.단말기와 php 모두 같은 문제가 발생합니다.

예, 언어별 유니코드 모음이 아닌 표준 동작입니다.

9.1.13.1.유니코드 문자 집합

자세한 설명을 위해 utf8_general_ci 및 utf8_unicode_ci 모두에 다음과 같은 균등성이 적용됩니다(비교 시 또는 검색 시 이 효과에 대한 내용은 섹션 9.1.7.7, "보합 효과의 예" 참조).

= = A ö = Oü = U

참고 항목: 대조 효과 예제

둘 중에 하나라도

  • 이 "특징"이 없는 모음을 사용합니다(namely하지만 다른 결과가 있음).

  • 쿼리에만 다른 조합을 사용합니다.작동해야 합니다.

     select * from topics where name='Harligt' COLLATE utf8_bin;
    

사건을 무감각하게 하려면 더 어려워집니다.LIKE하지만 가질 수 없습니다.Ä = A움라우트 변환대소문자를 구분하지 않고 이런 암묵적인 umlaut 변환을 하지 않는 mySQL 대조를 나는 모릅니다.아는 사람이 있다면 그 얘기를 듣고 싶습니다.

관련:

당신이 스웨덴에 있기 때문에 스웨덴 콜렉션을 사용하는 것을 추천합니다.그 차이를 보여주는 예는 다음과 같습니다.

CREATE TABLE topics (name varchar(100) not null) CHARACTER SET utf8;

INSERT topics (name) VALUES ('Härligt');

select * from topics where name='Harligt';
'Härligt'

select * from topics where name='Härligt';
'Härligt'    

ALTER TABLE topics MODIFY name VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_swedish_ci;

select * from topics where name='Harligt';
<no results>

select * from topics where name='Härligt';
'Härligt'

이 예제에서는 하나의 열만 스웨덴식 collection으로 변경했지만 전체 데이터베이스, 모든 테이블, 모든 varchar 열에 대해 변경해야 합니다.

대조 작업이 이 문제를 해결하는 하나의 방법이지만, 제가 보기에 훨씬 더 간단한 방법은BINARY키워드:

 SELECT 'a' = 'ä', BINARY 'a' = 'ä'

돌아올 것입니다1|0

사용자의 경우:

SELECT * FROM topics WHERE BINARY name='Härligt';

https://www.w3schools.com/sql/func_mysql_binary.asp 도 참조

대조 설정을 확인하려면 대조는 어떤 문자가 동일한지 설정하는 속성입니다.

이 두 페이지는 당신에게 도움이 될 것입니다.

http://dev.mysql.com/doc/refman/5.1/en/charset-general.html

http://dev.mysql.com/doc/refman/5.1/en/charset-mysql.html

여기에 몇 가지 대조표가 있습니다.http://collation-charts.org/mysql60/ .어떤 것이 utf8_general_ci인지 잘 모르겠습니다.

utf8_swedish_ci 차트입니다.어떤 문자를 동일하게 해석하는지 보여줍니다.http://collation-charts.org/mysql60/mysql604.utf8_swedish_ci.html

언급URL : https://stackoverflow.com/questions/2607130/mysql-treats-%c3%85%c3%84%c3%96-as-aao

반응형