본문 바로가기

Database/DB

postgresql 한글 order by의 기준

select * from store
order by store_nm;

sql로 분명히 한글 정렬했는데, 이상하게 정렬이 되어버렸다.

보는 바와 같이 위쪽은 가나다순으로 잘 나오다가 자릿수가 더 많은 stirng에서 다시 내림차순으로 정렬이 되고 있었다.

postgre에서는 정렬이 어떤 기준으로 되는걸까?

 


 

 PostgreSQL 시스템 카탈로그는 PostgreSQL의 관리 시스템이 사용하는 테이블에서 데이터베이스 및 테이블 등의 정보를 다음의 칼럼으로 관리한다.

 

위의 칼럼중 우리가 볼 칼럼은 datcollate이다.

 

다음의 쿼리를 실행하면 데이터베이스 마다 설정된 값을 볼수 있다.

select datname, datdba, encoding, datcollate, datctype from pg_database;

 

위와 보는 바와 같이 datcollate는 en_US.UTF8로 설정되어, 영어 기준인것을 볼 수 있다.

데이터베이스를 한꺼번에 바꾸고 싶다면 아래와 같이 update문을 실행하면 된다.

update pg_database set datcollate='ko_KR.utf8', 
where datname='데이터베이스이름';

 

 

쿼리마다 변경하고 싶다면 다음과 같이 collate를 추가해주면 된다.

select * from store
order by store_nm collate "ko_KR.utf8";

원하는 대로 정렬이 된것을 볼수 있다.

 

 

 

참고사항

https://www.devkuma.com/docs/postgresql/%EC%83%9D%EC%84%B1%EB%90%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C/

 

PostgreSQL | 데이터베이스(Database) | 생성된 데이터베이스 목록 조회

PostgreSQL로 생성된 데이터베이스 목록을 조회하는 방법에 대해 설명한다. \l 명령을 사용하기 먼저 psql의 메타 명령을 사용하는 방법이다. 생성된 데이터베이스 목록을 검색하려면 다음과 같이

www.devkuma.com