I Oracle, ROUND(number) funktion returnerar ett tal avrundat till ett givet antal decimaler.
Som standard avrundas talet till noll decimaler, men du kan ange ett valfritt argument som anger antalet decimaler som ska användas.
Oracle har också en ROUND(date) syntax, som används på datum. Den här artikeln handlar enbart om ROUND(number) syntax, som används på tal.
Syntax
Syntaxen ser ut så här:
ROUND(n [, integer ])
Där n kan vara vilken numerisk datatyp som helst eller vilken icke-numerisk datatyp som helst som implicit kan konverteras till en numerisk datatyp, och integer är ett valfritt heltal som anger antalet decimaler som ska avrunda n till.
Exempel
Här är ett exempel:
SELECT ROUND(7.85)
FROM DUAL; Resultat:
ROUND(7.85)
______________
8 Negativt värde
Om du ändrar det till ett negativt värde får du följande resultat:
SELECT ROUND(-7.85)
FROM DUAL; Resultat:
ROUND(-7.85)
_______________
-8 Andra argumentet
Här är ett exempel på ett andra argument:
SELECT ROUND(7.85, 1)
FROM DUAL; Resultat:
ROUND(7.85,1)
________________
7.9 I det här fallet specificerade jag att resultatet skulle avrundas till en decimal.
Här är ett annat exempel med ett större antal decimaler:
SELECT ROUND(3.14159265359, 4)
FROM DUAL; Resultat:
ROUND(3.14159265359,4)
_________________________
3.1416 Negativ avrundning
Du kan också ange ett negativt värde för det andra argumentet. Om du gör det avrundas talet till vänster om decimalkomma:
SELECT ROUND(75631, -3)
FROM DUAL; Resultat:
ROUND(75631,-3)
__________________
76000 Avrundning av icke-numeriska argument
Så här händer när vi försöker runda ett icke-numeriskt argument som inte kan konverteras till en numerisk datatyp:
SELECT ROUND('Bruce')
FROM DUAL; Resultat:
Error starting at line : 1 in command -
SELECT ROUND('Bruce')
FROM DUAL
Error report -
ORA-01722: invalid number Men vi kan runda datum – det finns en datumversion av den här funktionen som låter oss runda av datum.
Nullvärden
Försöker runda null returnerar null , och försöker avrunda ett tal med null resulterar också i null :
SET NULL 'null';
SELECT
ROUND(null),
ROUND(null, 2),
ROUND(2.345, null)
FROM DUAL; Resultat:
ROUND(NULL) ROUND(NULL,2) ROUND(2.345,NULL)
______________ ________________ ____________________
null null null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null uppstår som ett resultat av en SQL SELECT påstående.
Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.
Inkorrekt antal argument
Anropar ROUND() utan att skicka några argument returnerar ett fel:
SELECT ROUND()
FROM DUAL; Resultat:
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:
Och att skicka fel antal argument resulterar i ett fel:
SELECT ROUND(1.34, 2, 3)
FROM DUAL; Resultat:
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: