반응형

숫자만 들어있는 컬럼이 있는데, 정렬을 해 보니, 

1
11
12
13
2
21

이런씩으로 정렬되는 경우를 본 적이 있을 것이다. 
컬럼의 정의가 INT가 아닌 VARCHAR로 되어 있어서 그런 경우가 있다.
업무상 이렇게 데이터베이스를 설계할 경우도 있으니 잘잘못은 패스~ 하고

이렇경우 어떻게 정렬하면 재대로 표현될까.. 하니...
MySQL에는 (CAST)연산자라는게 있다.

cast type의 종류는 
binary
char
signed (부호있는 숫자)
date
datetime
time
unsigned (부호없는 숫자)
등이 있다.

이용 방법은 

정렬할 때에는 
select * from customers order by cast(customers_id as unsigned);

문자를 숫자로 변환할 때에는
select cast('1' as unsigned) as test
숫자를 문자로 변환할 때에는
select cast(2 as char(1)) as test

이렇게 이용하면 된다.

 

반응형

+ Recent posts