Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

MOD() Fungsi di Oracle

Di Oracle, MOD() fungsi mengembalikan operasi modulo. Dengan kata lain, ia mengembalikan sisa argumen pertama dibagi dengan yang kedua.

Sintaks

Sintaksnya seperti ini:

MOD(n2, n1)

Setiap argumen dapat berupa tipe data numerik apa pun atau tipe data nonnumerik apa pun yang dapat secara implisit dikonversi ke tipe data numerik.

Contoh

Ini contohnya:

SELECT MOD(100, 6)
FROM DUAL;

Hasil:

   MOD(100,6) 
_____________ 
            4

Oracle MOD() vs Modulus Klasik

MOD() Oracle fungsi berperilaku berbeda dari fungsi modulus matematika klasik, jika produk dari n1 dan n2 negatif.

Berikut adalah contoh yang menunjukkan perbedaan masing-masing:

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;

Hasil:

Oracle MOD()  Classical
____________  _________
           4	      4
           4	     -2
          -4	      2
          -4	     -4

Argumen Non-Numerik

Argumen dapat berupa tipe data numerik apa pun atau tipe data nonnumerik apa pun yang dapat secara implisit dikonversi ke tipe data numerik.

Berikut adalah contoh yang terjadi jika argumen tidak memenuhi kriteria tersebut:

SELECT MOD('Homer', 'Symptom')
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT MOD('Homer', 'Symptom')
FROM DUAL
Error report -
ORA-01722: invalid number

Argumen Null

MOD() mengembalikan null jika ada argumen null :

SET NULL 'null';

SELECT 
    MOD(null, 16),
    MOD(1024, null),
    MOD(null, null)
FROM DUAL;

Hasil:

   MOD(NULL,16)    MOD(1024,NULL)    MOD(NULL,NULL) 
_______________ _________________ _________________ 
           null              null              null 

Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali nilai null muncul sebagai hasil dari SELECT SQL penyataan.

Namun, Anda dapat menggunakan SET NULL untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null harus dikembalikan.

Argumen Tidak Ada

Memanggil MOD() dengan jumlah argumen yang salah, atau tanpa argumen apa pun menghasilkan kesalahan:

SELECT MOD()
FROM DUAL;

Hasil:

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:

Dan:

SELECT MOD(10, 2, 3)
FROM DUAL;

Hasil:

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. ORA-24247:akses jaringan ditolak oleh daftar kontrol akses (ACL)

  2. TNS-12505:TNS:pendengar saat ini tidak mengetahui SID yang diberikan di deskriptor koneksi

  3. 2PL, Model Ketat vs Ketat, Apakah Ada Manfaatnya?

  4. Temukan tahun berturut-turut maksimum untuk setiap ID dalam tabel (Oracle SQL)

  5. LISTAGG() Fungsi di Oracle