반응형
MySQL이든 MariaDB든 Oracle이든 마찬가지일 것 같다.
1,2,3,4,5,6,7,8,9,10,11,12 가 string 형태의 필드에 저장되어 있을 때 order by를 하면
1,11,12,2,3,4,5,6.. 이런식으로 정렬이 되어 버린다. 숫자가 아닌 문자를 기준으로 보자면 11보다 2가 더 크기 때문이다. 이럴 때 형변환(CAST)을 하여 사용하는 경우가 많은데 문제는 아래와 같은 경우이다.
1,2,3,4,5
A1, A2, A3
A1, B1, B2
이런 숫자와 문자들이 섞여 있는 경우. 예를어 앨범의 '트랙넘버' 필드 같은 경우가 저렇게 생겨먹을 수 있다.
(CD는 1,2,3,4로 가지만 테잎이나 LP는 앞뒤면을 나누기 위해 문자가 붙음)
이럴때 조금 복잡한 방법으로, zero padding을 앞에 넣어주는 경우가 있는데,
만약 필드수가 많지 않아 부하 걱정이 없다면 아래와 같이 해 주면 가장 편하다.
order by length(col),col
반응형
'IT 실무 > 데이터베이스' 카테고리의 다른 글
데이터베이스 회복 기법 정리 (6) | 2019.12.07 |
---|---|
mysql db를 전부 백업해서 옮기기(서버 이전 등) (0) | 2018.01.28 |
[MySQL] Your password does not satisfy the current policy requirements (0) | 2017.01.01 |
MySQL 여러개의 필드를 묶어서 하나의 Primary Key로 만들기 (0) | 2015.07.19 |
[PHP-MySQL] PHP mysqli Extension 간단 매뉴얼 (0) | 2013.10.26 |
댓글