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
우와 신기방기