MySQL에서는 변수의 타입을 직접 조회할 수 없습니다
MySQL에서는 다른 프로그래밍 언어와 달리 변수의 데이터 타입을 직접 조회하는 기능을 제공하지 않습니다. 대신 CAST 연산자를 사용하면 변수를 원하는 다른 타입으로 변환할 수 있으며, 이 과정을 통해 실질적으로 타입 정보를 다룰 수 있습니다.
먼저 변수를 선언하고 값을 할당하는 기본 문법은 다음과 같습니다.
SET @yourVariableName := 'anyValue';
이후 CAST 연산자를 사용해 원하는 타입으로 변환합니다.
SELECT CAST(@yourVariableName AS SIGNED);
아래에서 두 가지 대표적인 변환 사례를 통해 실제 동작 방식을 살펴보겠습니다.
사례 1: 문자열을 숫자(UNSIGNED)로 변환
문자열 형태의 숫자를 정수 타입으로 변환하는 예시입니다. 먼저 문자열 값을 변수에 할당합니다.
mysql> set @StringToInt := '12345'; Query OK, 0 rows affected (0.00 sec)
이제 CAST 연산자를 사용해 UNSIGNED 타입으로 변환합니다.
mysql> select CAST(@StringToInt as UNSIGNED);
실행 결과는 다음과 같습니다.
+--------------------------------+ | CAST(@StringToInt as UNSIGNED) | +--------------------------------+ | 12345 | +--------------------------------+ 1 row in set (0.00 sec)
문자열 '12345'가 성공적으로 부호 없는 정수 12345로 변환된 것을 확인할 수 있습니다.
사례 2: 숫자(INT)를 문자(CHAR)로 변환
반대로 숫자 값을 문자열로 변환할 수도 있습니다. 아래 예시는 정수 65를 CHAR 타입으로 캐스팅하여 변수에 저장하는 코드입니다.
mysql> set @IntTochar := CAST(65 as CHAR); Query OK, 0 rows affected (0.00 sec)
변환된 변수의 값을 조회해 보겠습니다.
mysql> select @IntTochar;
실행 결과는 다음과 같습니다.
+------------+ | @IntTochar | +------------+ | 65 | +------------+ 1 row in set (0.00 sec)
정리
MySQL은 변수의 타입을 직접 확인하는 방법을 제공하지 않지만, CAST 연산자를 활용하면 문자열 ↔ 숫자 등 다양한 타입 간의 변환이 가능합니다. 자주 사용되는 주요 CAST 타입은 다음과 같습니다.
SIGNED: 부호 있는 정수로 변환
UNSIGNED: 부호 없는 정수로 변환
CHAR: 문자열로 변환
DECIMAL: 고정 소수점 숫자로 변환
DATETIME: 날짜 및 시간 형식으로 변환
데이터 처리 시 타입 불일치 문제를 해결하거나, 입력값을 원하는 형식으로 정규화할 때 CAST 연산자를 적극적으로 활용하시기 바랍니다.