2014-01-26 3 views
0

where 절을 사용하여 select 쿼리를 작성할 수있는 방법이 있습니까? 비 라틴 문자는 무시합니까?비 라틴 문자를 구분하지 않는 SQL 쿼리?

예를 들어 리투아니아어 문자 Ė이 있습니다. 분명히 라틴 문자의 동등 물은 E입니다. 그래서 나는이 같은 쿼리를 작성할 수 있습니다 어쨌든이 :

SELECT * FROM `table` WHERE `keyword` LIKE %E%; 

을 그리고 나는 그것이 이러한 문자가 포함 된 모든 레코드를 반환 할 : E,Ė,Ę을, 나는 자동으로 SQL에이를 수있는 방법이있다 (또는 PHP 레벨에서)?

답변

2

당신은 당신이 시도한 것을 말하지 않습니다. 또한 table에 포함 된 문자 집합 (utf-8) 및 데이터 정렬을 말하지 않습니다. 그것들은 당신이 기본적으로 그러한 것들을 통제하는 방법입니다.

당신이 시도 할 수 :

SELECT * FROM `table` WHERE `keyword` COLLATE utf8_general_ci LIKE %E% 

또는이

SELECT * FROM `table` WHERE `keyword` COLLATE utf8_lithuanian_ci LIKE %E% 

두 번째는 당신이 원하는 것을 위해 작동하는지 내가 리투아니아를 모르기 때문에, 모른다. E, Ė, Æ는 사전에서 같은 문자로 간주됩니까? 이 아니고이 아닌 경우 리투아니아 데이터 정렬은 서로 일치하지 않습니다.

특정 데이터 정렬이 작동하는 것으로 확인되면 기본적으로 해당 데이터 정렬을 사용하도록 열을 변경할 수 있습니다.

alter table `table` 
    change `keyword` `keyword` collate utf8_lithuanian_ci 

색인 생성 속도가 빨라질 수 있기 때문에 좋은 생각입니다.

+0

솔직히 말해서, 나는 아무 것도 시도하지 않았다. 단순히 무엇을 시도해보아야하는지, 무엇을 google해야할지 모르기 때문이다. PHP 배열의 char 맵을 사용하여 해킹하는 것 외에도. 어쨌든, 당신이 제안한 첫 번째 쿼리는 제가 찾고있는 것을 정확하게 수행하는 것 같습니다. 고마워요! – galdikas

관련 문제