MySQL에서 숫자를 반올림(Round)하지 않고 소수점 이하를 잘라내어 내림 처리하고 싶다면 TRUNCATE() 함수를 사용하면 됩니다. TRUNCATE()는 지정한 자릿수 뒤의 숫자를 단순히 버리기 때문에, 반올림과 달리 값이 올라가지 않습니다.
TRUNCATE() 함수란?
TRUNCATE(X, D) 형태로 사용하며, X라는 숫자를 소수점 D자리까지만 남기고 그 이하의 자릿수는 모두 잘라냅니다. 예를 들어 TRUNCATE(23.567, 2)의 결과는 23.56이 됩니다.
1. 테이블 생성하기
먼저 데모용 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Value DECIMAL(20,8)
);
Query OK, 0 rows affected (0.54 sec)2. 데이터 삽입하기
insert 명령문을 사용하여 레코드를 추가합니다.
mysql> insert into DemoTable values(23.5654433); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(12.345542211); Query OK, 1 row affected, 1 warning (0.21 sec) mysql> insert into DemoTable values(12345.678543); Query OK, 1 row affected (0.22 sec)
3. 저장된 데이터 확인하기
select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----------------+ | Value | +----------------+ | 23.56544330 | | 12.34554221 | | 12345.67854300 | +----------------+ 3 rows in set (0.00 sec)
4. TRUNCATE()로 소수점 버리기
이제 update 문과 함께 TRUNCATE() 함수를 적용하여, 반올림하지 않고 소수점 둘째 자리까지만 남기고 나머지를 잘라내 보겠습니다.
mysql> update DemoTable set Value=truncate(Value,2); Query OK, 3 rows affected (0.20 sec) Rows matched: 3 Changed: 3 Warnings: 0
5. 최종 결과 확인하기
테이블의 레코드를 다시 한번 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----------------+ | Value | +----------------+ | 23.56000000 | | 12.34000000 | | 12345.67000000 | +----------------+ 3 rows in set (0.00 sec)
정리
위 결과에서 볼 수 있듯이, 23.56544330은 반올림되었다면 23.57이 되었겠지만 TRUNCATE()를 적용하여 23.56으로 내림 처리되었습니다. 이처럼 TRUNCATE() 함수를 사용하면 반올림 없이 원하는 자릿수에서 소수점을 깔끔하게 잘라낼 수 있으며, 금액 계산이나 측정값 처리처럼 값이 올라가면 안 되는 상황에서 특히 유용합니다.