SQL에서는 나머지 연산을 수행할 때 MOD
함수와 %
연산자를 사용할 수 있습니다. 하지만 이 두 방식은 사용되는 DBMS와 문법에서 차이가 있기 때문에 적절히 사용해야 합니다. 오늘은 MOD
함수와 %
연산자의 차이점과 사용법을 간단히 정리해보겠습니다.
1. MOD
함수란?
MOD
는 Modulus(나머지)를 의미하며, 표준 SQL에서 제공하는 함수입니다. 이 함수는 피제수(나누어지는 수)와 제수(나누는 수)를 받아 나머지를 반환합니다.
사용법:
MOD(피제수, 제수)
예시 (Oracle, PostgreSQL 등에서 사용 가능):
SELECT MOD(10, 3) AS 나머지 FROM DUAL;
- 결과:
1
(10 ÷ 3의 나머지)
2. %
연산자란?
%
는 SQL Server에서만 사용 가능한 연산자로, 피제수와 제수의 나머지 연산을 간단한 수식 형태로 표현할 수 있습니다.
사용법:
피제수 % 제수
예시 (SQL Server 전용):
SELECT 10 % 3 AS 나머지;
- 결과:
1
(10 ÷ 3의 나머지)
3. MOD와 %의 차이점
특징 | MOD 함수 | % 연산자 |
---|---|---|
지원 DBMS | Oracle, PostgreSQL 등 | SQL Server |
표현 방식 | MOD(피제수, 제수) |
피제수 % 제수 |
가독성 | 함수 호출 방식 | 수식처럼 간단 |
예외 처리 | 제수가 0일 경우 오류 발생 | 제수가 0일 경우 오류 발생 |
4. 동일한 결과를 얻는 예시 비교
Oracle (MOD 함수 사용):
SELECT MOD(15, 4) AS 나머지 FROM DUAL;
- 결과:
3
(15 ÷ 4의 나머지)
SQL Server (% 연산자 사용):
SELECT 15 % 4 AS 나머지;
- 결과:
3
(15 ÷ 4의 나머지)
5. 두 방식의 비교
MOD
함수: 표준 SQL이기 때문에 다양한 DBMS에서 호환됩니다. Oracle, PostgreSQL 등 대부분의 데이터베이스에서 사용 가능하므로 이식성이 높습니다.%
연산자: 간단한 수식 형태로 작성 가능하며, SQL Server에서만 사용됩니다. SQL Server에서 작업할 때 가독성과 간결성이 뛰어납니다.
6. 주의점
- DBMS 호환성:
- Oracle, PostgreSQL 등에서는
MOD
를 사용해야 하고, SQL Server에서는%
를 사용해야 합니다.
- Oracle, PostgreSQL 등에서는
- 제수가 0일 경우:
- 두 방식 모두 제수가 0이면 오류가 발생하니, 이를 방지하려면 조건문을 추가하거나 예외 처리를 해야 합니다.
제수 0 예외 처리 예시 (Oracle):
SELECT CASE
WHEN 제수 = 0 THEN NULL
ELSE MOD(피제수, 제수)
END AS 나머지
FROM 테이블명;
'SQL' 카테고리의 다른 글
서브쿼리(스칼라 서브쿼리, 인라인 뷰, 중첩 서브쿼리) (0) | 2024.11.17 |
---|---|
절차적언어와 비절차적언어 (0) | 2024.11.16 |