sql >> Database teknologi >  >> RDS >> Oracle

MOD() Funktion i Oracle

I Oracle er MOD() funktion returnerer modulo-operationen. Med andre ord returnerer den resten af ​​dets første argument divideret med dets andet.

Syntaks

Syntaksen ser sådan ud:

MOD(n2, n1)

Hvert argument kan være enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.

Eksempel

Her er et eksempel:

SELECT MOD(100, 6)
FROM DUAL;

Resultat:

   MOD(100,6) 
_____________ 
            4

Oracle MOD() vs klassisk modul

Oracles MOD() funktion opfører sig anderledes end den klassiske matematiske modulfunktion, hvis produktet af n1 og n2 er negativ.

Her er et eksempel, der viser, hvordan hver af disse adskiller sig:

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;

Resultat:

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

Ikke-numeriske argumenter

Argumenterne kan være enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.

Her er et eksempel på, hvad der sker, når argumenterne ikke opfylder disse kriterier:

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

Resultat:

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

Nul-argumenter

MOD() returnerer null hvis et argument er null :

SET NULL 'null';

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

Resultat:

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

Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når der opstår en null-værdi som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Manglende argumenter

Kalder MOD() med det forkerte antal argumenter eller uden argumenter resulterer i en fejl:

SELECT MOD()
FROM DUAL;

Resultat:

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:

Og:

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

Resultat:

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. Hvad er ODBC?

  2. SQL rækkefølge efter antal

  3. Hvordan konverterer man et helt MySQL-databasetegnsæt og sortering til UTF-8?

  4. Sådan opretter du forbindelse til en database ved hjælp af Sequel Pro