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

3 måder at formatere et tal til 2 decimaler i Oracle

Når du bruger Oracle Database, kan du bruge funktioner som TO_CHAR(number) for at returnere tal som en streng, formateret til to decimaler (eller hvor mange decimaler du ønsker).

Eller du kan bruge funktioner som ROUND(number) og TRUNC(number) for at afrunde eller afkorte tallet til dit nødvendige antal decimaler.

TO_CHAR() Funktion

Her er et eksempel, der bruger TO_CHAR(number) funktion:

SELECT TO_CHAR(1.2345, 'fm99D00')
FROM DUAL;

Resultat:

1.23

I dette tilfælde har det oprindelige tal mere end to decimaler, så resultatet afkorter det simpelthen til det angivne antal nuller, der følger decimal-/radixtegnet (D ) i formatmodellen.

Grunden til, at jeg brugte nuller efter decimaltegnet, er at angive efterfølgende nuller, hvis det kræves.

Eksempel:

SELECT TO_CHAR(7, 'fm99D00')
FROM DUAL;

Resultat:

7.00

Hvis jeg ikke vil have de efterfølgende nuller, kan jeg ændre 0 tegn til 9 s.

Her er en sammenligning af de to:

SELECT 
    TO_CHAR(7, 'fm99D00') AS "r1",
    TO_CHAR(7, 'fm99D99') AS "r2"
FROM DUAL;

Resultat:

     r1    r2 
_______ _____ 
7.00    7.   

Bruger 9 s i dette tilfælde resulterede i et radix-tegn, men ingen decimaler.

Jeg skal påpege, at fm er en formatmodifikator, der fjerner enhver udfyldning, der kan anvendes på resultatet. Du kan udelade dette, hvis du ikke har noget imod, at resultatet bliver polstret. Selvom du, hvis du gør dette, kan ende med efterfølgende nuller, selv når du bruger 9 formatelement.

Her er, hvad der sker, når jeg fjerner fm fra det forrige eksempel:

SELECT 
    TO_CHAR(7, '99D00') AS "r1",
    TO_CHAR(7, '99D99') AS "r2"
FROM DUAL;

Resultat:

       r1        r2 
_________ _________ 
  7.00      7.00   

Selvfølgelig er du ikke kun begrænset til to decimaler - du kan angive flere decimaler i din formatmodel, hvis det kræves.

Eksempel:

SELECT TO_CHAR(7, 'fm99D0000')
FROM DUAL;

Resultat:

7.0000

ROUND() Funktion

Her er et eksempel, der bruger ROUND(number) funktion:

SELECT ROUND(1.2573, 2)
FROM DUAL;

Resultat:

1.26

Than ROUND() funktion afrunder et tal til en given decimal. Her har vi angivet to decimaler, men vi kunne have angivet et hvilket som helst tal.

I dette tilfælde blev tallet rundet op.

TRUNC() Funktion

Her er et eksempel, der bruger TRUNC(number) funktion:

SELECT TRUNC(1.2573, 2)
FROM DUAL;

Resultat:

1.25

TRUNC() funktion afkorter et tal til en given decimal. Der sker ingen afrunding.


  1. Sådan krypteres en visning i SQL Server

  2. Kapacitetsplanlægning ved hjælp af ydeevnedata

  3. Hvordan tilføjer du en NOT NULL-kolonne til en stor tabel i SQL Server?

  4. Konfigurer nemt webserver med XAMPP