PostgreSQL 한글 정렬

By | June 13, 2013

포스트그레스에서 국가이름을 입력하고 정렬을 시켜봤습니다.

스크린샷 2013-06-13 오후 10.09.28

뭔가 이상합니다.

검색을 해보니, http://stackoverflow.com/questions/14191848/postgresql-order-by-is-very-weird에 문제와 원인이 잘 설명되어있습니다. collate 때문이랍니다. 따라서 쿼리를 다음처럼 주면.

select name_ko_kr from countries order by name_ko_kr collate “C”;

출력은 아래처럼 정상적으로 나옵니다.

스크린샷 2013-06-13 오후 10.07.36

 

하지만, 모든 쿼리마다 collate 를 주는 건 뭔가 모질라보여서, 디폴트를 찾아봤는데, 실패했습니다. 현재까지 발견한 유일한 방법은 initdb 를 호출하기 전에 환경변수에 LC_COLLATE 를 넣어주는 것 뿐이네요. (http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_db&wr_id=165894)

즉, export LC_COLLATE=”C” 라고 쉘에서 입력하면 해준다음에, brew intall postgresql 이나 apt-get install postgresql 을 하던지 하면 한글 정렬을 제대로 해주십니다.

2 thoughts on “PostgreSQL 한글 정렬

  1. Pingback: 쎄미 | [rails] PostgreSQL의 한글 필드 정렬

Leave a Reply