REMAINDER Function
REMAINDER (number2, number1)
number2를 number1로 나누었을 때 나머지 값을 반환합니다.
MOD Function
MOD ( number2, number1 )
number2를 number1로 나누었을 때 나머지 값을 반환합니다.
REMAINDER 함수의 특징
- number2와 number1은 모든 숫자 데이터 타입이 가능합니다.
- 반환 값은 숫자 데이터 타입입니다.
- number2가 무한대이며, 데이터 타입이 NUMBER이면 오류를 반환하고 데이터 타입이 BINARY_FLOAT 또는 BINARY_DOUBLE이면 NaN을 반환합니다.
- number1 != 0 이면 나머지 값의 계산식은 number2 - (number1 * ROUND(number2 / number1))입니다.
- number2가 부동 소수점이고 나머지 값이 0이면, 나머지 부호는 number2의 부호입니다.
MOD 함수의 특징
- 분자 및 분모의 데이터 타입은 숫자 데이터 타입이거나 숫자 데이터 타입으로 변환 가능한 모든 타입이 될 수 있습니다.
- MOD 함수는 "0으로 나누기"오류를 방지하기 위해 분모가 0 인 경우 분자 값을 반환합니다.
- MOD 계산식은 number2 – number1 * FLOOR (number2 / number1) 입니다.
차이점
- REMAINDER 함수는 나머지 계산 시 ROUND 함수를 사용합니다.
- MOD 함수는 나머지 계산 시 FLOOR 함수를 사용합니다.
- ROUND 함수는 올림 되거나 내림될 수 있지만, FLOOR 함수는 항상 내림 처리됩니다.
- 음수를 계산할 때, 다른 결괏값이 나올 수 있습니다.
REMAINDER 함수의 예제
EX 1) 25 / 4의 나머지
SELECT REMAINDER(25, 4) AS REMAINDER_RESULT
FROM DUAL;
EX 2) 25 / 5의 나머지
SELECT REMAINDER(25, 5) AS REMAINDER_RESULT
FROM DUAL;
EX 3) 25 / 7의 나머지
SELECT REMAINDER(25, 7) AS REMAINDER_RESULT
FROM DUAL;
REMAINDER 함수의 계산식 number2 - (number1 * ROUND(number2 / number1)에 값을 대입하면 왜 -3이 나오는지 확인 가능합니다.
25 - (7 * ROUND(25 / 7)) = 25 - (7 * 4) = 25 - 28 = -3
EX 4) 29 / -10의 나머지
SELECT REMAINDER(29, -10) AS REMAINDER_RESULT
FROM DUAL;
29 - (-10 * ROUND(29/-10)) = 29 - (-10 * -3) = 29 - 30 = -1
EX 5) -29 / -10의 나머지
SELECT REMAINDER(-29, -10) AS REMAINDER_RESULT
FROM DUAL;
-29 - (-10 * ROUND(-29/-10)) = -29 - (-10 * 3) = -29 + 30 = 1
MOD 함수의 예제
EX 1) 25 / 7의 나머지
SELECT MOD(25, 7) AS MOD_RESULT
FROM DUAL;
REMAINDER 함수의 결과는 1인데, MOD 함수는 4로 정상적으로 처리되었습니다.
EX 2) 25 / 0의 나머지
SELECT MOD(25, 0) AS MOD_RESULT
FROM DUAL;
MOD 함수에서 0으로 나눌 경우 반환 값은 첫 번째 매개변수의 값입니다.
EX 3) 30 / '4'의 나머지
SELECT MOD(30,'4') AS MOD_RESULT
FROM DUAL;
'4'가 숫자 타입으로 변환되어서 계산이 됩니다.
반응형
'DataBase > Oracle' 카테고리의 다른 글
[ORACLE]문자 치환 TRNSLATE 함수 (0) | 2021.06.26 |
---|---|
[ORACLE]문자열 치환 REPLACE 함수 (0) | 2021.06.25 |
[ORACLE]양수, 음수 판단하는 SIGN 함수 (0) | 2021.06.05 |
[ORACLE]최대값, 최소값 구하는 GREATEST, LEAST 함수 (0) | 2021.06.04 |
[ORACLE]조건문을 제공하는 DECODE 함수 (0) | 2021.06.03 |
댓글