Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm MOD () trong Oracle

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 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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tắt và sau đó bật tất cả các chỉ mục bảng trong Oracle

  2. Cách xuất bảng trống trong oracle

  3. Cách sao chép môi trường R12.2

  4. Cách thực thi chức năng trong Oracle với các tham số

  5. Ví dụ về Oracle FOR LOOP REVERSE