JaeWon's Devlog
article thumbnail
반응형

MySQL에서 데이터 정렬시 한글(자음) -> 영어(알파벳) 순으로 정렬이 필요했다.

1. 데이터

  • 정렬 안한 데이터 상태

  • 정렬 데이터 상태(한글(자음) -> 영어(알파벳))

2. 쿼리

  1. 테이블에는 한글, 영어만 있다고 가정된다.(특수문자, 숫자 X)
  2. 정렬하고자 하는 컬럼(tag_name)의 첫 글자를 구하여, ASCII 코드 값을 구한다.
  3. ASCII 코드에서 영어는 65~122 이므로, 1번에서 구한 값 ASCII 코드 값이 123보다 작으면 영어로 판단.
  4. 영어 일시 순서를 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;

참고

- https://solbel.tistory.com/429

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!