정렬 수행 중 의도하지 않은대로 정렬되는 경우가 있다.
1, 11, 12, 21, 23, 7, 8, ... 순으로 정렬되었다.
칼럼의 타입이 달라 발생하는 문제로, 형 변환 기능에 대해 정리해 보고자 한다.
변환 가능 데이터 타입
- BINARY
- CHAR
- DATE
- DATETIME
- DECIMAL
- JSON
- NCHAR
- SIGNED [INTEGER]
- TIME
- UNSIGNED [INTEGER]
CAST
변환하고자 하는 타입을 AS로 직접 명시한다.
SELECT * FROM USERS ORDER BY CAST(USER_ID AS UNSIGNED);
// 문자에서 숫자로 변환
SELECT CAST('123' AS UNSIGNED) AS test;
SELECT CAST('123' AS UNSIGNED) FROM DUAL;
// 숫자에서 문자로 변환
SELECT CAST(2 AS char(1)) AS test;
SELECT CAST(123 AS CHAR(3)) FROM DUAL;
// 문자 또는 숫자를 날짜 타입으로 변환
SELECT CAST(20230418 AS DATE) FROM DUAL; // 2023-04-18
SELECT CAST('20230418' AS DATE) FROM DUAL; // 2023-04-18
CONVERT
두 번째 인수로 변환하고자 하는 타입을 직접 전달한다.
USING 절은 서로 다른 문자 셋 간의 데이터 변환을 위해 사용된다.
// 숫자를 문자열로 변환
SELECT CONVERT(202304180950, CHAR); // "202304180950"
// 숫자를 날짜 타입으로 변환
SELECT CONVERT(20230418, DATE); // 2023-04-18
// SIGNED 타입으로 변환
SELECT CONVERT(NOW(), SIGNED); // 20230418135712
출처
https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%ED%83%80%EC%9E%85-%EB%B3%80%ED%99%98-cast-convert
[MYSQL] 📚 타입 강제 변환 (cast / convert)
타입 강제 변환 MySQL은 비교나 검색을 수행할 때 데이터의 타입이 서로 다를 경우, 내부적으로 타입이 같아지도록 자동 변환하여 처리합니다. 하지만 사용자가 명시적으로 타입을 변환할 수 있
inpa.tistory.com
https://hoehen-flug.tistory.com/27
[MySQL] 형변환 CAST 함수 / CONVERT 함수 사용 방법
MySQL에서 쿼리를 사용하다 보면 형변환이 필요할 때가 있다. 데이터 타입이 CHAR인 컬럼을 조회할 때 숫자 타입으로 바꿔서 조회하는 것이 필요한 경우가 있다. 특히 숫자로 이뤄진 컬럼인 줄 알
hoehen-flug.tistory.com