MySQL에서 DECIMAL 타입의 값을 INT(정수)로 변환하려면 FLOOR() 함수를 사용하는 것이 가장 간단하고 확실한 방법입니다. FLOOR() 함수는 소수점 이하를 잘라내고 해당 값 이하의 가장 큰 정수를 반환합니다.
SELECT FLOOR(yourColumnName) FROM yourTableName WHERE condition;
그럼 실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성하기
먼저 DECIMAL 타입 컬럼을 가진 테이블을 생성합니다.
mysql> create table DecimalToIntDemo
-> (
-> Amount DECIMAL(3,1)
-> );
Query OK, 0 rows affected (0.88 sec)
2단계: 데이터 삽입하기
INSERT 명령어를 사용해 테이블에 레코드를 삽입합니다.
mysql> insert into DecimalToIntDemo values(12.5);
Query OK, 1 row affected (0.23 sec)
mysql> insert into DecimalToIntDemo values(50.4);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DecimalToIntDemo values(48.6);
Query OK, 1 row affected (0.10 sec)
3단계: 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DecimalToIntDemo;
실행 결과는 다음과 같습니다.
+--------+
| Amount |
+--------+
| 12.5 |
| 50.4 |
| 48.6 |
+--------+
3 rows in set (0.00 sec)
4단계: FLOOR() 함수로 DECIMAL을 INT로 변환하기
앞서 소개한 문법을 실제 쿼리에 적용해 보겠습니다. 필요에 따라 조건절(WHERE)도 함께 사용할 수 있습니다.
mysql> SELECT FLOOR(Amount) from DecimalToIntDemo
-> where Amount > 10;
실행 결과, DECIMAL 값이 정수(INT) 형태로 변환되어 출력됩니다.
+---------------+
| FLOOR(Amount) |
+---------------+
| 12 |
| 50 |
| 48 |
+---------------+
3 rows in set (0.00 sec)
위 결과를 보면 12.5 → 12, 50.4 → 50, 48.6 → 48처럼 소수점 이하가 버려지고 순수한 정수 값만 반환되는 것을 확인할 수 있습니다.
참고: CAST() 함수와의 차이점
FLOOR() 외에도 MySQL에서 제공하는 CAST() 함수를 사용해 정수 타입으로 변환할 수 있습니다.
SELECT CAST(Amount AS SIGNED) FROM DecimalToIntDemo;
다만 주의할 점은, MySQL에서 DECIMAL을 정수로 변환할 때 CAST()나 암시적 형변환은 일반적으로 반올림 방식으로 동작한다는 것입니다(예: 12.5 → 13). 따라서 소수점 이하를 항상 내림(버림) 처리하고 싶다면 FLOOR() 함수를 사용하는 것이 가장 안전합니다.