정렬 수행 중 의도하지 않은대로 정렬되는 경우가 있다.

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

 

+ Recent posts