In Oracle is de ROUND(number)
functie retourneert een getal afgerond op een bepaald aantal decimalen.
Standaard rondt het het getal af op nul decimalen, maar u kunt een optioneel argument opgeven dat het aantal te gebruiken decimalen specificeert.
Oracle heeft ook een ROUND(date)
syntaxis, die wordt gebruikt op datums. Dit artikel gaat uitsluitend over de ROUND(number)
syntaxis, die op getallen wordt gebruikt.
Syntaxis
De syntaxis gaat als volgt:
ROUND(n [, integer ])
Waar n
kan elk numeriek gegevenstype zijn of elk niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar een numeriek gegevenstype, en integer
is een optioneel geheel getal dat het aantal decimalen aangeeft dat moet worden afgerond op n
naar.
Voorbeeld
Hier is een voorbeeld:
SELECT ROUND(7.85)
FROM DUAL;
Resultaat:
ROUND(7.85) ______________ 8
Negatieve waarde
Het overschakelen naar een negatieve waarde levert het volgende resultaat op:
SELECT ROUND(-7.85)
FROM DUAL;
Resultaat:
ROUND(-7.85) _______________ -8
Tweede argument
Hier is een voorbeeld van het verstrekken van een tweede argument:
SELECT ROUND(7.85, 1)
FROM DUAL;
Resultaat:
ROUND(7.85,1) ________________ 7.9
In dit geval heb ik aangegeven dat het resultaat moet worden afgerond op één decimaal.
Hier is nog een voorbeeld met een groter aantal decimalen:
SELECT ROUND(3.14159265359, 4)
FROM DUAL;
Resultaat:
ROUND(3.14159265359,4) _________________________ 3.1416
Negatieve afronding
U kunt ook een negatieve waarde opgeven voor het tweede argument. Als u dit doet, rondt u het getal af naar links van de komma:
SELECT ROUND(75631, -3)
FROM DUAL;
Resultaat:
ROUND(75631,-3) __________________ 76000
Niet-numerieke argumenten afronden
Dit is wat er gebeurt als we een niet-numeriek argument proberen af te ronden dat niet kan worden geconverteerd naar een numeriek gegevenstype:
SELECT ROUND('Bruce')
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT ROUND('Bruce') FROM DUAL Error report - ORA-01722: invalid number
We kunnen datums echter afronden - er is een datumversie van deze functie waarmee we datums kunnen afronden.
Null-waarden
Probeert null
af te ronden retourneert null
en proberen een getal af te ronden met null
resulteert ook in null
:
SET NULL 'null';
SELECT
ROUND(null),
ROUND(null, 2),
ROUND(2.345, null)
FROM DUAL;
Resultaat:
ROUND(NULL) ROUND(NULL,2) ROUND(2.345,NULL) ______________ ________________ ____________________ null null null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null
treedt op 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.
Onjuist aantal argumenten
ROUND()
. aanroepen zonder het doorgeven van argumenten geeft een fout:
SELECT ROUND()
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT ROUND() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
En het doorgeven van het verkeerde aantal argumenten resulteert in een fout:
SELECT ROUND(1.34, 2, 3)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT ROUND(1.34, 2, 3) FROM DUAL Error at Command Line : 1 Column : 23 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: