sql >> Databáze >  >> RDS >> Oracle

Funkce MOD() v Oracle

V Oracle je to MOD() funkce vrací operaci modulo. Jinými slovy, vrátí zbytek svého prvního argumentu dělený druhým.

Syntaxe

Syntaxe vypadá takto:

MOD(n2, n1)

Každý argument může být jakýkoli číselný datový typ nebo jakýkoli nenumerický datový typ, který lze implicitně převést na číselný datový typ.

Příklad

Zde je příklad:

SELECT MOD(100, 6)
FROM DUAL;

Výsledek:

   MOD(100,6) 
_____________ 
            4

Oracle MOD() vs. Classical Modulus

MOD() společnosti Oracle funkce se chová odlišně od klasické matematické modulové funkce, pokud je součin n1 a n2 je negativní.

Zde je příklad, který ukazuje, jak se každý z nich liší:

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;

Výsledek:

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

Nečíselné argumenty

Argumenty mohou být jakýkoli číselný datový typ nebo jakýkoli nenumerický datový typ, který lze implicitně převést na číselný datový typ.

Zde je příklad toho, co se stane, když argumenty nesplňují tato kritéria:

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

Výsledek:

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

Nulové argumenty

MOD() vrátí null pokud je nějaký argument null :

SET NULL 'null';

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

Výsledek:

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

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo, kdykoli se v důsledku příkazu SQL SELECT objeví hodnota null. prohlášení.

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Chybí argumenty

Volání MOD() s nesprávným počtem argumentů nebo bez jakýchkoli argumentů vede k chybě:

SELECT MOD()
FROM DUAL;

Výsledek:

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:

A:

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

Výsledek:

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. Erlang a jeho spotřeba paměti haldy

  2. Připojení softwaru IRI k Oracle

  3. Jak aktualizovat vybrané řádky hodnotami ze souboru CSV v Postgresu?

  4. Jak povolit SQL Server Agent XP pomocí T-SQL