웹마스터 팁
page_full_width">
MySQL에서 한글 정렬 문제
2001.11.21 15:28
고수분들은 다 아시는 내용이겠지만 저와 같은 생초보 분들을 위하여 올려 봅니다. (죄송~~~)
------------------------------
대개 한글을 정렬하기 위해서
mysql을 설치할 때
--with-charset=euc_kr
옵션을 주고 컴파일하도록 권장하고 있습니다.
그런데
my.cnf나 my.ini file에
[mysqld]
:
:
default-character-set=euc_kr
:
위 처럼 setting이 되어 있는데도 한글 정렬이 제대로 안되면?
테이블을 생성할 때 해당 필드에 다음과 같이 binary 옵션을 줘보세요.
create table my_user (
user_no int(10) unsigned not null auto_increment,
user_id varchar(30) not null,
user_pw varchar(30) not null,
user_name varchar(50) binary not null,
primary key (user_no)
);
위와 같이 user_name 필드에 "binary" 옵션을 주고 테이블을 생성하고 "select * from my_user order by user_name" 을 실행해보면 정상적으로 한글 정렬이 됩니다.
만일 테이블이 이미 생성되어 있다면 admin tool 등을 사용하여 옵션을 수정하시면 되고, 그것도 불가한 경우에는 다음 방법을 사용해보세요.
"select * from my_user order by binary user_name"
** 아래처럼 해도 된다고 하는데 제가 test 해본 결과는 안되던데...
여러분이 직접 한 번 해보세요.
(mysql에서 직접하면 되는데 php program내에서는 안되네요)
"select * from my_user where binary user_name Between binary '강감찬' And binary '홍길동 order by user_name"
참고로 mysql 버젼은 3.23.38 이고
php 버젼은 4.0.5 입니다.
------------------------------
대개 한글을 정렬하기 위해서
mysql을 설치할 때
--with-charset=euc_kr
옵션을 주고 컴파일하도록 권장하고 있습니다.
그런데
my.cnf나 my.ini file에
[mysqld]
:
:
default-character-set=euc_kr
:
위 처럼 setting이 되어 있는데도 한글 정렬이 제대로 안되면?
테이블을 생성할 때 해당 필드에 다음과 같이 binary 옵션을 줘보세요.
create table my_user (
user_no int(10) unsigned not null auto_increment,
user_id varchar(30) not null,
user_pw varchar(30) not null,
user_name varchar(50) binary not null,
primary key (user_no)
);
위와 같이 user_name 필드에 "binary" 옵션을 주고 테이블을 생성하고 "select * from my_user order by user_name" 을 실행해보면 정상적으로 한글 정렬이 됩니다.
만일 테이블이 이미 생성되어 있다면 admin tool 등을 사용하여 옵션을 수정하시면 되고, 그것도 불가한 경우에는 다음 방법을 사용해보세요.
"select * from my_user order by binary user_name"
** 아래처럼 해도 된다고 하는데 제가 test 해본 결과는 안되던데...
여러분이 직접 한 번 해보세요.
(mysql에서 직접하면 되는데 php program내에서는 안되네요)
"select * from my_user where binary user_name Between binary '강감찬' And binary '홍길동 order by user_name"
참고로 mysql 버젼은 3.23.38 이고
php 버젼은 4.0.5 입니다.
간단하면서도 이유를 몰라 몇날을 고민했던 부분입니다. 정말 고맙습니다.