sql >> Database >  >> RDS >> Oracle

MOD() Functie in Oracle

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:

  1. Ik krijg een Er is een poging gedaan om een ​​programma te laden met een onjuiste indelingsfout op een SQL Server-replicatieproject

  2. Queryresultaten exporteren naar .csv of door tabs gescheiden bestand in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 23

  3. Hoe SQL-cursors voor speciale doeleinden te gebruiken

  4. Microsoft Access Table Tips – Trucs &Richtlijnen Deel 5