[MySQL || MariaDB] 숫자형 문자 정렬 문제 및 해결(Feat.varchar)
2020. 3. 15. 18:53
반응형
개념
숫자(INT)형 문자(varchar)를 기준으로 정렬하게 되면 원하는 대로 되지 않는다.
바아로~ 해결 해봅시다.
문법
문법에 들어가기 앞서, 공통 테이블 예시
CREATE TABLE orderEx (
id INT PRIMARY KEY AUTO_INCREMENT,
varcharId VARCHAR(64),
textId TEXT(64)
)
INSERT INTO orderex VALUES(1,'col1','1');
INSERT INTO orderex (varcharId,textId) VALUES('col2','2');
INSERT INTO orderex (varcharId,textId) VALUES('col3','3');
INSERT INTO orderex (varcharId,textId) VALUES('col4','4');
INSERT INTO orderex (varcharId,textId) VALUES('col5','5');
INSERT INTO orderex (varcharId,textId) VALUES('col6','6');
INSERT INTO orderex (varcharId,textId) VALUES('col7','7');
INSERT INTO orderex (varcharId,textId) VALUES('col8','8');
INSERT INTO orderex (varcharId,textId) VALUES('col9','9');
INSERT INTO orderex (varcharId,textId) VALUES('col10','10');
INSERT INTO orderex (varcharId,textId) VALUES('col11','11');
INSERT INTO orderex (varcharId,textId) VALUES('col12','12');
예시 테이블 orderex
만약 varcharId 컬럼 기준으로 ORDER BY를 하게 되면 결과는 이렇다.
SELECT * FROM orderex ORDER BY varcharId
결과
이와 같이 개 같은 결과가 나온다.(물론 textId의 ORDER BY 결과도 동일하다)
해결
정렬(오름차순)
SELECT * FROM orderex ORDER BY varcharId*1
결과
만약 역 정렬하고 싶다면?
역 정렬(내림차순)
SELECT * FROM orderex ORDER BY length(varcharId) desc,varcharId desc
결과
예제 파일 제공
반응형
'MariaDB' 카테고리의 다른 글
[MySQL || MariaDB] TIMESTAMP와 DATETIME 차이점 총 정리 (0) | 2020.04.19 |
---|---|
[MySQL || MariaDB] ALTER TABLE 문법 총 정리 (0) | 2020.03.22 |
[MySQL || MariaDB] 여러 테이블 한번에 카운터 하기 (0) | 2020.03.15 |
[MySQL || MariaDB] ORDER BY 특정 값 우선 정렬(feat.FIELD) (2) | 2020.02.29 |
[MySQL || MariaDB] InnoDB 총 정리 (1) | 2019.12.28 |