BackEnd/DataBase
[MySql] 데이터 정렬하기(한글 ->영문 순서)
Wonol
2021. 8. 28. 15:08
반응형
MySQL에서 데이터 정렬시 한글(자음) -> 영어(알파벳) 순으로 정렬이 필요했다.
1. 데이터
- 정렬 안한 데이터 상태
- 정렬 데이터 상태(한글(자음) -> 영어(알파벳))
2. 쿼리
- 테이블에는 한글, 영어만 있다고 가정된다.(특수문자, 숫자 X)
- 정렬하고자 하는 컬럼(tag_name)의 첫 글자를 구하여, ASCII 코드 값을 구한다.
- ASCII 코드에서 영어는 65~122 이므로, 1번에서 구한 값 ASCII 코드 값이 123보다 작으면 영어로 판단.
- 영어 일시 순서를 2번째로 하고, 그 이외에는 첫번째(한글)로 한다.
SELECT *
FROM tag_info
ORDER BY
(
CASE WHEN ASCII(SUBSTRING(tag_name,1)) < 123 THEN 2 ELSE 1 END
), tag_name;
- 번외
- 숫자 까지 포함한 경우의 쿼리는 아래와 같다.
- ASCII 코드에서 숫자는 (48~57) 이다.
SELECT *
FROM tag_info
ORDER BY
(
CASE WHEN ASCII(SUBSTRING(tag_name,1)) BETWEEN 48 AND 57 THEN 3
CASE WHEN ASCII(SUBSTRING(tag_name,1)) < 123 THEN 2 ELSE 1 END
), tag_name;
참고
반응형