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.