MySQL의 ROUND() 함수에서 두 번째 인수에 음수 값을 지정하면, 소수점 앞자리 숫자들이 삭제되면서 반올림 처리됩니다. 이때 삭제되는 자릿수는 음수 인수의 절댓값에 따라 결정됩니다.
음수 인수를 사용한 ROUND() 함수의 동작 원리
두 번째 인수가 -1이면 일의 자리, -2이면 십의 자리, -3이면 백의 자리가 각각 삭제 대상이 되고, 해당 자릿수의 숫자가 5 이상인 경우 그 앞자리 숫자가 올림됩니다. 아래 예제들을 통해 두 번째 인수의 음수 값에 따라 출력 결과가 어떻게 달라지는지 살펴보겠습니다.
예제 1: 두 번째 인수가 -1인 경우
mysql> Select ROUND(1789.456,-1); +--------------------+ | ROUND(1789.456,-1) | +--------------------+ | 1790 | +--------------------+ 1 row in set (0.00 sec)
위 쿼리는 1790을 반환합니다. 값이 -1이므로 삭제 대상인 일의 자리 숫자가 9(5보다 큼)이기 때문에, 그 앞자리인 8이 9로 반올림된 것입니다.
예제 2: 두 번째 인수가 -2인 경우
mysql> Select ROUND(1789.456,-2); +--------------------+ | ROUND(1789.456,-2) | +--------------------+ | 1800 | +--------------------+ 1 row in set (0.00 sec)
위 쿼리는 1800을 반환합니다. 값이 -2이므로 삭제 대상인 십의 자리 숫자가 8(5보다 큼)이기 때문에, 그 앞자리인 7이 8로 반올림된 것입니다.
예제 3: 두 번째 인수가 -3인 경우
mysql> Select ROUND(1789.456,-3); +--------------------+ | ROUND(1789.456,-3) | +--------------------+ | 2000 | +--------------------+ 1 row in set (0.00 sec)
위 쿼리는 2000을 반환합니다. 값이 -3이므로 삭제 대상인 백의 자리 숫자가 7(5보다 큼)이기 때문에, 그 앞자리인 1이 2로 반올림된 것입니다.
예제 4: 두 번째 인수가 -4인 경우
mysql> Select ROUND(1789.456,-4); +--------------------+ | ROUND(1789.456,-4) | +--------------------+ | 0 | +--------------------+ 1 row in set (0.00 sec)
위 쿼리는 0을 반환합니다. 1789.456은 소수점 앞자리가 총 4개인데, 두 번째 인수의 값이 -4이므로 모든 정수 자릿수가 삭제되고 결과적으로 0이 되는 것입니다.
정리
이처럼 MySQL ROUND() 함수의 두 번째 인수에 음수 값을 사용하면 지정한 자릿수만큼 소수점 앞자리를 제거하고 반올림할 수 있습니다. 금액을 백 단위, 천 단위 등으로 간편하게 반올림해야 할 때 유용하게 활용할 수 있습니다.