Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja MOD() w Oracle

W Oracle MOD() funkcja zwraca operację modulo. Innymi słowy, zwraca resztę swojego pierwszego argumentu podzieloną przez drugi.

Składnia

Składnia wygląda tak:

MOD(n2, n1)

Każdy argument może być dowolnym numerycznym typem danych lub dowolnym nienumerycznym typem danych, który można niejawnie przekonwertować na numeryczny typ danych.

Przykład

Oto przykład:

SELECT MOD(100, 6)
FROM DUAL;

Wynik:

   MOD(100,6) 
_____________ 
            4

Oracle MOD() a moduł klasyczny

MOD() Oracle funkcja zachowuje się inaczej niż klasyczna matematyczna funkcja modułu, jeśli iloczyn n1 i n2 jest ujemny.

Oto przykład, który pokazuje, jak każdy z nich się różni:

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;

Wynik:

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

Argumenty nieliczbowe

Argumentami może być dowolny numeryczny typ danych lub dowolny nienumeryczny typ danych, który można niejawnie przekonwertować na numeryczny typ danych.

Oto przykład tego, co się dzieje, gdy argumenty nie spełniają tych kryteriów:

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

Wynik:

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

Argumenty zerowe

MOD() zwraca null jeśli jakikolwiek argument jest null :

SET NULL 'null';

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

Wynik:

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

Domyślnie SQLcl i SQL*Plus zwracają spację za każdym razem, gdy w wyniku polecenia SQL SELECT wystąpi wartość null oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Brakujące argumenty

Wywołanie MOD() z niewłaściwą liczbą argumentów lub bez żadnych argumentów powoduje błąd:

SELECT MOD()
FROM DUAL;

Wynik:

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:

Oraz:

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

Wynik:

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. Jaki jest odpowiednik Oracle REF CURSOR w MySQL podczas korzystania z JDBC?

  2. EM 12c Regulacja wartości progowych

  3. Jak mogę utworzyć dynamiczną klauzulę WHERE?

  4. Jak programowo wygenerować DDL z bazy danych Oracle?

  5. Jak wywołać procedurę składowaną w pakiecie Oracle za pomocą Entity Framework?