När du använder Oracle Database kan du använda funktioner som TO_CHAR(number)
för att returnera siffror som en sträng. Detta gör att du kan formatera talet så att det har ett visst antal decimaler – inklusive inga decimaler, om det är vad du vill.
Du kan också använda funktioner som ROUND(number)
och TRUNC(number)
för att avrunda eller trunkera talet utan decimaler.
Det finns också CAST()
funktion som låter dig casta en datatyp som ett heltal, vilket effektivt tar bort alla decimaler.
TO_CHAR()
Funktion
Här är ett exempel som använder TO_CHAR(number)
funktion:
SELECT TO_CHAR(1234.56, 'fm99G999')
FROM DUAL;
Resultat:
1,235
I det här fallet består min formatmodell av:
- en
fm
, som är en formatmodifierare som tar bort alla inledande och/eller avslutande utfyllnadstecken som kan läggas till i resultatet. - flera
9
tecken, som representerar varje siffra - ett
G
tecken, som representerar en platsmedveten gruppavgränsare
Det viktiga att notera är att den inte använder D
formatelement, som är det formatmedvetna decimaltecknet. Det använder inte heller några bokstavliga decimaltecken (som ett kommatecken eller punkt). Och eftersom det inte har några decimaltecken finns det uppenbarligen inga siffror efter ett sådant tecken.
Om vi gjorde det ha ett decimaltecken, valfri 9
eller 0
element till höger om det kan leda till att decimaler inkluderas i resultatet.
Exempel:
SELECT TO_CHAR(7, 'fm99D00')
FROM DUAL;
Resultat:
7.00
För att undertrycka de avslutande nollorna kan vi ändra 0
tecken till 9
s. Men att ta bort fm
modifierare kan resultera i att efterföljande nollor visas även när du använder 9
formatelement.
Här är en jämförelse för att illustrera vad jag menar:
SELECT
TO_CHAR(7, 'fm99D00') AS "r1",
TO_CHAR(7, 'fm99D99') AS "r2",
TO_CHAR(7, '99D99') AS "r3"
FROM DUAL;
Resultat:
r1 r2 r3 _______ _____ _________ 7.00 7. 7.00
ROUND()
Funktion
Här är ett exempel som använder ROUND(number)
funktion:
SELECT ROUND(1234.56, 0)
FROM DUAL;
Resultat:
1235
ROUND()
funktion avrundar ett tal till en given decimal. Här angav vi noll decimaler, vilket tar bort alla decimaler från talet.
I det här fallet avrundades siffran uppåt.
TRUNC()
Funktion
Här är ett exempel som använder TRUNC(number)
funktion:
SELECT TRUNC(1234.56, 0)
FROM DUAL;
Resultat:
1234
TRUNC()
funktion trunkerar ett tal till en given decimal. Ingen avrundning sker. Därför trunkerades detta tal till noll decimaler, utan avrundning.
CAST()
Funktion
Här är ett exempel som använder CAST()
funktion:
SELECT CAST(1234.56 AS INT)
FROM DUAL;
Resultat:
1235
CAST()
funktion konverterar sitt argument till en annan datatyp. I det här fallet konverterade vi talet till ett heltal. Heltal har inga decimaler, så alla bråkdelar tas bort från resultatet (inklusive decimaltecknet). Observera att resultatet har avrundats uppåt.