MySQL을 배우면서 반올림과 올림, 내림에 관해 익혔다. 좀 더 살펴보니 제거, 절삭과 같은 것도 가능하다. 아래서 확인해보자.
ROUND: 반올림
지정하는 소숫점 자리로 반올림한다.
SELECT ROUND(135.375, 2); -- 135.38
FLOOR: 버림 (to integer)
가장 가까운 '정수'로 버림하여 반환한다.
SELECT FLOOR(135.375); -- 135
CEIL 또는 CEILING: 올림 (to integer)
가장 가까운 '정수'로 올림하여 반환한다.
SELECT CEIL(135.375); -- 136
SELECT CEILING(135.375); -- 136
TRUNCATE: 제거
학습 중 TRUNCATE라는 것을 발견했다. 이것은 사실상 위의 모든 속성과 다르다고 할 수 있는데, 그냥 n째 자리까지 남기고 아예 제거를 해버리기 때문이다. 그래서 결과는 아래와 같다.
SELECT TRUNCATE(135.375, 2); --135.37
혹시라도 ROUND와 TRUNCATE를 혼동하면 티 안나는 오류를 맛볼 수 있다. 그 맛은... 쓸 것 같다. 그러니 문제풀이를 한다면 문제를 잘 읽고, 분석을 하는 경우에도 정확하게 원하는 값을 정해두고 시작하자.
약간의 TMI
- 검색해보니 사실 TRUNCATE는 ROUND와 혼동되기보다 table과 같이 쓰여 DELETE나 DROP이라는 함수와 혼동되는 경향이 있는 듯 함
- truncate는 동사로 1. 끝을 자르다 2. 꼭대기를 자르다 3. 일부를 생략하여 줄이다 라는 뜻을 가지고 있음
- TRUNC(날짜와 함께 쓰이는 듯..?)와 TRUNCATE 함수는 서로 다른 역할을 하는 것으로 추정되나, 위 영어 뜻을 고려하면 비슷한 맥락에서 나온듯 함