반응형
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;
참고
반응형
'BackEnd > DataBase' 카테고리의 다른 글
[DB] DELETE 쿼리 시 Join 사용하기(MySQL) (0) | 2022.07.20 |
---|---|
[MySQL] on duplicate key update(Insert 시 값 존재하면 Update) (0) | 2022.07.01 |
[DB] Join(조인) 정리하기 (0) | 2022.05.07 |
[DB] Transaction(트랜잭션) 정리하기 (0) | 2022.05.07 |
[DB] Oracle vs MySQL vs MSSQL 비교 (0) | 2022.04.20 |