Collation 설정에 따라 정렬 순서에 차이

기록지·2024년 9월 25일
0

Collation 설정에 따라 다른 언어나 대소문자 구분이 필요한 상황에서는 차이가 두드러지게 나타남. 예를 들어 한글과 영어가 섞여 있을 때, 또는 영문자의 대소문자를 구분할 때 차이가 생김.

  • Collation을 사용하여 대소문자 구분 및 영문자와 한글이 섞인 데이터를 정렬하는 예시
    데이터 추가 (영어 이름 포함)
INSERT INTO users (id, name)
VALUES 
(7, 'Alice'),
(8, 'bob'),
(9, 'Charlie'),
(10, '다은')
....
;

1. 기본 정렬 (Collation 없이)

SELECT name 
FROM users 
ORDER BY name;

출력 결과 (기본 정렬)

Name
Alice
Charlie
bob
가람
가영
강민
나윤
다은
다혜
민수

-> 영문자가 한글보다 먼저 오며, 대소문자를 구분하지 않고 정렬. 소문자 bob이 대문자 Alice와 Charlie 사이에 있음.

2. 대소문자 구분하여 정렬 (Case Sensitive)

SELECT name 
FROM users 
ORDER BY name COLLATE "Korean_Unicode_CS_AS";

출력 결과 (대소문자 구분 정렬)

Name
Alice
Charlie
bob
가람
가영
강민
나윤
다은
다혜
민수

-> 대소문자를 구분하여도 영어가 한글보다 먼저 나오며, 소문자 bob은 대문자 Alice와 Charlie 뒤에 있음.

3. 한글을 우선 정렬 (한글 우선 Collation 사용)
한글을 영어보다 우선적으로 정렬하고 싶다면, 한글 Collation을 우선하는 방식으로 설정할 수 있음.

SELECT name 
FROM users 
ORDER BY name COLLATE "Korean_Unicode_CI_AS";

출력 결과 (한글 우선 정렬)

Name
가람
가영
강민
나윤
다은
다혜
민수
Alice
bob
Charlie

2개의 댓글

comment-user-thumbnail
2024년 10월 15일

우와 신기방기

1개의 답글