숫자만 들어있는 컬럼이라 정렬했더니
1
11
12
2
21
.
.
.
이런식으로 정렬되는 경우가 있다...
컬럼의 type을 INT가 아닌 VARCHAR로 되어 있는 경우다
업무상 이렇게 데이터베이스를 설계할 경우도 있지만...
이럴때 어떻게 정렬해야 제대로 표현될까
MySQL에서는 CAST(값, 데이터형식[길이]), CONVERT(값, 데이터형식[길이])로 타입을 변경 시켜준다
데이터형식[길이]는 생략 가능하다
type의 종류는 binary, char, signed (부호있는 숫자), date, datetime, time, unsigned (부호없는 숫자) 등이 있다.
CAST(값, 데이터형식[길이])
방법은
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
CONVERT(값, 데이터형식[길이])
CONVERT() 사용하면 2.9167을 SIGNED INTEGER형으로 변경하면 3이 출력 된다
참고 SIGNED INTEGER는 부호가 있는 정수(-21억~21억)를 나타내고
UNSIGNED INTEGER는 부호가 없는 정수(0~42억)을 나타낸다.
MYSQL이나 MSSQL에서 대표적인 데이터 타입 변환함수는 CONVERT인데요.
오라클에서는 동작하지 않습니다. 오라클에서 데이터 타입 변경을 하고 싶을때는 다른 함수를 사용하여야 합니다.
TO_[데이터타입]이다. 대표적으로 TO_CHAR , TO_NUMBER, TO_DATE 등이 있습니다.
'DataBase > Mysql' 카테고리의 다른 글
[MySQL] auto_increment 삭제, 초기화 (how to remove auto_increment in mysql) (0) | 2020.01.03 |
---|---|
[MySQL] foreign key(외래키) 추가, 삭제, 확인 방법 (0) | 2019.12.23 |
MySQL 오류 처리(조건 핸들러) (0) | 2019.12.13 |
MySQL 동적SQL (0) | 2019.12.13 |
[MySQL] error FK에러 cannot add foreign key constraint 해결 (0) | 2019.12.07 |