Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL TRUNCATE() 함수에서 두 번째 인수에 음수 값을 지정하면 결과는 어떻게 달라질까?

두 번째 인수에 음수 값을 지정했을 때의 동작

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이 되기 때문입니다.

결과 요약

두 번째 인수 값결과설명
-11780일의 자리 삭제
-21700십의 자리와 일의 자리 삭제
-31000백의 자리 이하 삭제
-40정수 부분 전체 삭제

참고로 TRUNCATE() 함수는 ROUND() 함수와 달리 절삭 대상 자릿수를 기준으로 반올림하지 않고 무조건 버립니다. 예를 들어 TRUNCATE(1789.456, -1)의 경우 일의 자리가 9임에도 올림되지 않고 1780이 반환됩니다. 만약 반올림 처리가 필요하다면 ROUND() 함수를 사용해야 합니다.