두 번째 인수에 음수 값을 지정했을 때의 동작
MySQL의 TRUNCATE() 함수는 숫자를 지정한 자릿수까지 버림(절삭)하는 함수입니다. 이때 두 번째 인수(D)에 음수 값을 지정하면 소수점 아래 자릿수가 아니라 소수점 앞의 정수 부분 자릿수가 반올림 없이 그대로 잘려나갑니다. 삭제되는 자릿수는 두 번째 인수의 음수 값 크기에 따라 결정되며, 남는 자릿수는 0으로 채워집니다.
아래 예제들을 통해 두 번째 인수의 음수 값에 따라 TRUNCATE() 함수의 출력이 어떻게 달라지는지 확인해 보겠습니다.
예제 1: 두 번째 인수가 -1인 경우
mysql> Select TRUNCATE(1789.456,-1); +-----------------------+ | TRUNCATE(1789.456,-1) | +-----------------------+ | 1780 | +-----------------------+ 1 row in set (0.00 sec)
위 쿼리는 1780을 반환합니다. 두 번째 인수가 -1이므로 소수점 바로 앞의 첫 번째 자릿수(일의 자리)가 반올림 없이 삭제되었기 때문입니다.
예제 2: 두 번째 인수가 -2인 경우
mysql> Select TRUNCATE(1789.456,-2); +-----------------------+ | TRUNCATE(1789.456,-2) | +-----------------------+ | 1700 | +-----------------------+ 1 row in set (0.00 sec)
위 쿼리는 1700을 반환합니다. 두 번째 인수가 -2이므로 소수점 앞의 두 자릿수(십의 자리와 일의 자리)가 삭제되었기 때문입니다.
예제 3: 두 번째 인수가 -3인 경우
mysql> Select TRUNCATE(1789.456,-3); +-----------------------+ | TRUNCATE(1789.456,-3) | +-----------------------+ | 1000 | +-----------------------+ 1 row in set (0.00 sec)
위 쿼리는 1000을 반환합니다. 두 번째 인수가 -3이므로 소수점 앞의 세 자릿수(백의 자리, 십의 자리, 일의 자리)가 삭제되고 천의 자리만 남게 됩니다.
예제 4: 두 번째 인수가 -4인 경우
mysql> Select TRUNCATE(1789.456,-4); +-----------------------+ | TRUNCATE(1789.456,-4) | +-----------------------+ | 0 | +-----------------------+ 1 row in set (0.00 sec)
위 쿼리는 0을 반환합니다. 1789.456은 소수점 앞에 총 네 자릿수를 가지고 있는데, 두 번째 인수 값이 -4이므로 정수 부분 전체가 삭제되어 0이 되기 때문입니다.
결과 요약
| 두 번째 인수 값 | 결과 | 설명 |
|---|---|---|
| -1 | 1780 | 일의 자리 삭제 |
| -2 | 1700 | 십의 자리와 일의 자리 삭제 |
| -3 | 1000 | 백의 자리 이하 삭제 |
| -4 | 0 | 정수 부분 전체 삭제 |
참고로 TRUNCATE() 함수는 ROUND() 함수와 달리 절삭 대상 자릿수를 기준으로 반올림하지 않고 무조건 버립니다. 예를 들어 TRUNCATE(1789.456, -1)의 경우 일의 자리가 9임에도 올림되지 않고 1780이 반환됩니다. 만약 반올림 처리가 필요하다면 ROUND() 함수를 사용해야 합니다.