sql >> Databasteknik >  >> RDS >> Oracle

ROUND(nummer) Funktion i Oracle

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:

  1. Hur anropar man en Oracle-funktion från Hibernate med en returparameter?

  2. 11 vanliga SQL-satser med grundläggande exempel

  3. Välj n slumpmässiga rader från SQL Server-tabellen

  4. Hur man visar ett datum i brittiskt format i SQL Server (T-SQL)