sql >> Databasteknik >  >> RDS >> Oracle

3 sätt att formatera ett tal till 2 decimaler i Oracle

När du använder Oracle Database kan du använda funktioner som TO_CHAR(number) för att returnera tal som en sträng, formaterad till två decimaler (eller hur många decimaler du än behöver).

Eller så kan du använda funktioner som ROUND(number) och TRUNC(number) för att avrunda eller trunkera talet till önskat antal decimaler.

TO_CHAR() Funktion

Här är ett exempel som använder TO_CHAR(number) funktion:

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

Resultat:

1.23

I det här fallet har det ursprungliga talet fler än två decimaler, så resultatet trunkeras helt enkelt det till det angivna antalet nollor som följer decimal-/radixtecknet (D ) i formatmodellen.

Anledningen till att jag använde nollor efter decimaltecknet är att ange efterföljande nollor om det behövs.

Exempel:

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

Resultat:

7.00

Om jag inte vill ha de avslutande nollorna kan jag ändra 0 tecken till 9 s.

Här är en jämförelse av de två:

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

Resultat:

     r1    r2 
_______ _____ 
7.00    7.   

Använder 9 s i det här fallet, resulterade i ett radixtecken, men inga decimaler.

Jag bör påpeka att fm är en formatmodifierare som tar bort all utfyllnad som kan appliceras på resultatet. Du kan utelämna detta om du inte har något emot att resultatet blir vadderat. Även om du gör detta kan du sluta med avslutande nollor, även när du använder 9 formatelement.

Här är vad som händer när jag tar bort fm från föregående exempel:

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

Resultat:

       r1        r2 
_________ _________ 
  7.00      7.00   

Naturligtvis är du inte bara begränsad till två decimaler – du kan ange fler decimaler i din formatmodell om det behövs.

Exempel:

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

Resultat:

7.0000

ROUND() Funktion

Här är ett exempel som använder ROUND(number) funktion:

SELECT ROUND(1.2573, 2)
FROM DUAL;

Resultat:

1.26

Than ROUND() funktion avrundar ett tal till en given decimal. Här angav vi två decimaler, men vi kunde ha angett vilket tal som helst.

I det här fallet avrundades siffran uppåt.

TRUNC() Funktion

Här är ett exempel som använder TRUNC(number) funktion:

SELECT TRUNC(1.2573, 2)
FROM DUAL;

Resultat:

1.25

TRUNC() funktion trunkerar ett tal till en given decimal. Ingen avrundning sker.


  1. Vad är den maximala längden på ett tabellnamn i Oracle?

  2. Hur skapar man en ny databas efter att ha installerat Oracle Database 11g Express Edition?

  3. SQLite JSON_INSERT()

  4. Nätverksbelastningstestning med iPerf