sql >> Database >  >> RDS >> Oracle

RONDE(getal) Functie in Oracle

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:

  1. SQL MIN() voor beginners

  2. LIMIT trefwoord op MySQL met voorbereide verklaring

  3. Hoe een Clausule met Groeperen door in Select Query toe te passen - SQL Server / TSQL Tutorial Part 131

  4. unieke waarden uit een kolom selecteren