In Oracle, de MOD()
functie retourneert de modulo-bewerking. Met andere woorden, het geeft de rest van het eerste argument terug, gedeeld door het tweede.
Syntaxis
De syntaxis gaat als volgt:
MOD(n2, n1)
Elk argument kan elk numeriek gegevenstype zijn of elk niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar een numeriek gegevenstype.
Voorbeeld
Hier is een voorbeeld:
SELECT MOD(100, 6)
FROM DUAL;
Resultaat:
MOD(100,6) _____________ 4
Oracle MOD() versus klassieke modulus
Oracle's MOD()
functie gedraagt zich anders dan de klassieke wiskundige modulusfunctie, als het product van n1
en n2
is negatief.
Hier is een voorbeeld dat laat zien hoe elk van deze verschilt:
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;
Resultaat:
Oracle MOD() Classical
____________ _________
4 4
4 -2
-4 2
-4 -4
Niet-numerieke argumenten
De argumenten kunnen elk numeriek gegevenstype zijn of elk niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar een numeriek gegevenstype.
Hier is een voorbeeld van wat er gebeurt als de argumenten niet aan die criteria voldoen:
SELECT MOD('Homer', 'Symptom')
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT MOD('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Nullargumenten
MOD()
retourneert null
als een argument null
is :
SET NULL 'null';
SELECT
MOD(null, 16),
MOD(1024, null),
MOD(null, null)
FROM DUAL;
Resultaat:
MOD(NULL,16) MOD(1024,NULL) MOD(NULL,NULL) _______________ _________________ _________________ null null null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer een null-waarde optreedt als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Ontbrekende argumenten
MOD()
. aanroepen met het verkeerde aantal argumenten, of zonder argumenten resulteert in een fout:
SELECT MOD()
FROM DUAL;
Resultaat:
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:
En:
SELECT MOD(10, 2, 3)
FROM DUAL;
Resultaat:
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: