회사명으로 정렬하려하는데 replace를이용해 회사명에 붙은 (주)를 제외하고 정렬하려한다
select
replace(컬럼명, '(주)', '') as orbycolumn
from 회사테이블
order by orbycolumn;
쿼리를 실행했지만 원하는 데이터가 나오지 않았다
ㄱ이맨위로와야하는데 ㄷ이 맨위로오고 데이터가 뒤죽박죽이였다
문자열정렬에 이슈가 있나 하고 DataBase collate를 조회해보았다
SHOW lc_collate
쿼리 실행을 한 결과 collate가 en_US.utf8 로 설정되있다
DataBase 생성을 할 때 따로 명시하지않아 자동으로 잡은모양이다.
정렬할 Column의 collcate를 수정해주면 된다
ALTER TABLE company ALTER COLUMN COMPANY_NAME SET DATA TYPE character varying(255) COLLATE "ko-KR-x-icu"
쿼리 실행 후 다시 조회해보았더니 원하는대로 데이터가 정렬되었다.
특정 Column에 대한 collate만 수정을 한 것이기 때문에 DataBase를 생성할 땐 collate도 설정해야겠다
'DataBase' 카테고리의 다른 글
eXERD / DB 모델링 도구 (0) | 2022.07.13 |
---|---|
Postgresql / Ubuntu Server에 설치 후 셋팅 (0) | 2022.07.13 |
Postgresql / 컬럼의 데이터타입 변경 (0) | 2022.07.13 |
Postgresql / Tymeleaf 데이터 Null 값 처리 (0) | 2022.07.13 |
mariadb / 마이그레이션 중 Error Code: 1366. Incorrect string value (0) | 2022.07.13 |