Trong Oracle, MOD()
hàm trả về hoạt động mô-đun. Nói cách khác, nó trả về phần còn lại của đối số đầu tiên chia cho đối số thứ hai.
Cú pháp
Cú pháp như sau:
MOD(n2, n1)
Mỗi đối số có thể là bất kỳ kiểu dữ liệu số hoặc bất kỳ kiểu dữ liệu không phải số nào có thể được chuyển đổi hoàn toàn thành kiểu dữ liệu số.
Ví dụ
Đây là một ví dụ:
SELECT MOD(100, 6)
FROM DUAL;
Kết quả:
MOD(100,6) _____________ 4
Oracle MOD () so với Mô-đun cổ điển
MOD()
của Oracle hàm hoạt động khác với hàm mô đun toán học cổ điển, nếu tích của n1
và n2
là tiêu cực.
Dưới đây là một ví dụ chứng minh sự khác nhau của từng loại:
SELECT
MOD(100, 6) AS "Oracle MOD()",
100 - 6 * FLOOR(100/6) AS "Classical"
FROM DUAL
UNION ALL
SELECT
MOD(100, -6),
100 - -6 * FLOOR(100/-6)
FROM DUAL
UNION ALL
SELECT
MOD(-100, 6),
-100 - 6 * FLOOR(-100/6)
FROM DUAL
UNION ALL
SELECT
MOD(-100, -6),
-100 - -6 * FLOOR(-100/-6)
FROM DUAL;
Kết quả:
Oracle MOD() Classical
____________ _________
4 4
4 -2
-4 2
-4 -4
Đối số không phải dạng số
Các đối số có thể là bất kỳ kiểu dữ liệu số nào hoặc bất kỳ kiểu dữ liệu phi số nào có thể được chuyển đổi hoàn toàn thành kiểu dữ liệu số.
Dưới đây là một ví dụ về điều gì sẽ xảy ra khi các đối số không đáp ứng tiêu chí đó:
SELECT MOD('Homer', 'Symptom')
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT MOD('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Đối số rỗng
MOD()
trả về null
nếu bất kỳ đối số nào là null
:
SET NULL 'null';
SELECT
MOD(null, 16),
MOD(1024, null),
MOD(null, null)
FROM DUAL;
Kết quả:
MOD(NULL,16) MOD(1024,NULL) MOD(NULL,NULL) _______________ _________________ _________________ null null null
Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào giá trị null xảy ra do một SELECT
trong SQL tuyên bố.
Tuy nhiên, bạn có thể sử dụng SET NULL
để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null
nên được trả lại.
Thiếu đối số
Đang gọi MOD()
với số lượng đối số sai hoặc không có bất kỳ đối số nào dẫn đến lỗi:
SELECT MOD()
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT MOD() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Và:
SELECT MOD(10, 2, 3)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT MOD(10, 2, 3) FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: