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";
원하는 대로 정렬이 된것을 볼수 있다.
참고사항
'Database > DB' 카테고리의 다른 글
디비 개선 작업 + cluster (2) | 2024.09.09 |
---|---|
postgresql SQL Error [42P10]: ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification (0) | 2022.11.10 |
파티셔닝 실습 - postgresql (0) | 2021.06.22 |
파티션 개념 (0) | 2021.06.21 |
객체 지향 데이터베이스 (OODB / object-oriented Database) (2) | 2021.06.18 |