MOD
MOD (나머지)
입력 expr1을 expr2로 나눈 나머지를 반환해요.
모듈로 산술 연산자(expr1 % expr2)와 동일해요.
본문
구문
MOD( <expr1> , <expr2> )
인자
expr1
숫자 표현식이에요.
expr2
숫자 표현식이에요.
반환 값
정수 또는 고정 소수점 10진수 숫자를 반환해요.
사용 참고 사항
expr1과expr2는 모두 숫자 표현식이어야 해요. 정수일 필요는 없어요.- 반환 값은 바닥 나눗셈(아래로 내림)이 아니라 잘림 기반 나눗셈(0으로 반올림)의 나머지예요. 따라서
expr1이 음수이면 반환 값도 음수예요. 이 동작은 일부 프로그래밍 언어(예: Python)와 다르지만 표준 SQL과는 일치해요. 자세한 내용은 Modulo 위키피디아 페이지를 참고해요.
예시
다음 예시는 정수와 정수가 아닌 값 모두에서 MOD() 함수의 사용법을 보여줘요:
SELECT MOD(3, 2) AS mod1, MOD(4.5, 1.2) AS mod2;
출력:
+------+------+
| MOD1 | MOD2 |
+------+------+
| 1 | 0.9 |
+------+------+
다음 단계는 각 결과가 어떻게 계산되는지 보여줘요. MOD()는 잘림 기반 나눗셈(몫을 0으로 반올림)을 사용하므로, 나머지는 expr1 - (TRUNC(expr1 / expr2) * expr2)이에요:
- MOD(3, 2): 3 / 2는 1.5이고, 잘라서 1이 돼요. 나머지는 3 - (1 * 2) = 1이에요.
- MOD(4.5, 1.2): 4.5 / 1.2는 3.75이고, 잘라서 3이 돼요. 나머지는 4.5 - (3 * 1.2) = 4.5 - 3.6 = 0.9예요.
MOD()는 잘림 기반 나눗셈을 사용하므로 음수 expr1은 음수 나머지를 만들어요:
SELECT MOD(-3, 2) AS neg_mod;
출력:
+---------+
| NEG_MOD |
+---------+
| -1 |
+---------+
MOD(-3, 2): -3 / 2는 -1.5이고, 잘라서 -1이 돼요. 나머지는 -3 - (-1 * 2) = -3 + 2 = -1이에요.