MySQL에서 소수점 이하 3자리까지만 표시하고 싶다면 TRUNCATE() 함수를 사용하면 됩니다. TRUNCATE()는 숫자를 지정한 자릿수에서 잘라내기 때문에 반올림 없이 원하는 소수 자릿수를 그대로 유지할 수 있습니다.
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value DECIMAL(10,5)
);
Query OK, 0 rows affected (0.51 sec)이제 insert 명령어를 사용해 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable(Value) values(109.4567); Query OK, 1 row affected (0.25 sec) mysql> insert into DemoTable(Value) values(15.9875); Query OK, 1 row affected (0.28 sec) mysql> insert into DemoTable(Value) values(1234.2346789); Query OK, 1 row affected, 1 warning (0.14 sec)
select 문을 사용해 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+------------+ | Id | Value | +----+------------+ | 1 | 109.45670 | | 2 | 15.98750 | | 3 | 1234.23468 | +----+------------+ 3 rows in set (0.00 sec)
Value 컬럼은 DECIMAL(10,5)로 정의되어 있어 소수점 이하 5자리까지 저장되어 있는 것을 확인할 수 있습니다. 이제 TRUNCATE() 함수를 사용해 소수점 이하 3자리까지만 표시해 보겠습니다.
mysql> select truncate(Value,3) from DemoTable;
실행 결과는 다음과 같습니다.
+-------------------+ | truncate(Value,3) | +-------------------+ | 109.456 | | 15.987 | | 1234.234 | +-------------------+ 3 rows in set (0.00 sec)
TRUNCATE()와 ROUND()의 차이점
TRUNCATE()는 지정한 자릿수 뒤의 숫자를 단순히 버리는(절사) 방식입니다. 예를 들어 15.9875를 소수점 3자리에서 처리하면 15.987이 됩니다. 반면 ROUND()는 반올림을 수행하기 때문에 같은 값이 15.988로 반환됩니다. 따라서 반올림 없이 정확히 해당 자릿수까지만 표시해야 하는 경우에는 TRUNCATE()를 사용하는 것이 적합합니다.