본문 바로가기

something useful

mySQL에서 정렬(order by)이 안될 때.

mySQL에서 varchar로 잡힌 필드를 정렬(order by)할 때 만약 원하는 값이 나오지 않는다면 BINARY()를 이용하는 것이 해결책이 될 수 있다.

예를 들어,

CREATE TABLE `my_table` (
`idx` mediumint(8) unsigned NOT NULL auto_increment,
`id` varchar(20) NOT NULL default '',
`pass` varchar(20) NOT NULL default '',
`name` varchar(20) NOT NULL default '',
`email` varchar(35) NOT NULL default '',
PRIMARY KEY (`idx`)
)

일 때, 쿼리문이 다음과 같을 때,

SELECT * FROM `my_table` ORDER BY name;

원하는 정렬 결과가 나오지 않는다면 다음과 같이 하면 된다.

SELECT * FROM `my_table` ORDER BY BINARY(name);

이 방법은 varchar 등으로 정의된 필드에 한글이 입력되어 있고, order by로 정렬이 제대로 되지 않을 때 사용 가능하다.

감사합니다. 소프님, 드림님. :)