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

4 måder at formatere et tal uden decimaler i Oracle

Når du bruger Oracle Database, kan du bruge funktioner som TO_CHAR(number) for at returnere tal som en streng. Dette giver dig mulighed for at formatere tallet, så det har et bestemt antal decimaler – inklusive ingen decimaler, hvis det er det, du ønsker.

Du kan også bruge funktioner som ROUND(number) og TRUNC(number) at afrunde eller afkorte tallet uden decimaler.

Der er også CAST() funktion, der giver dig mulighed for at caste en datatype som et heltal, hvilket effektivt fjerner alle decimaler.

TO_CHAR() Funktion

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

SELECT TO_CHAR(1234.56, 'fm99G999')
FROM DUAL;

Resultat:

1,235

I dette tilfælde består min formatmodel af:

  • én fm , som er en formatmodifikator, der fjerner alle indledende og/eller efterstillede udfyldningstegn, der kan føjes til resultatet.
  • flere 9 tegn, som repræsenterer hvert ciffer
  • én G tegn, som repræsenterer en lokalitetsbevidst gruppeseparator

Det vigtige at bemærke er, at det ikke bruger D formatelement, som er det formatbevidste decimaltegn. Den bruger heller ikke bogstavelige decimaltegn (såsom et komma eller punktum). Og fordi den ikke har nogen decimaltegn, er der åbenbart ingen cifre efter sådan et tegn.

Hvis vi gjorde have et decimaltegn, enhver 9 eller 0 elementer til højre for det kan resultere i, at decimaler indgår i resultatet.

Eksempel:

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

Resultat:

7.00

For at undertrykke de efterfølgende nuller kan vi ændre 0 tegn til 9 s. Men fjernelse af fm modifikator kan resultere i, at efterfølgende nuller vises, selv når du bruger 9 formatelement.

Her er en sammenligning for at illustrere, hvad jeg mener:

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

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

SELECT ROUND(1234.56, 0)
FROM DUAL;

Resultat:

1235

ROUND() funktion afrunder et tal til en given decimal. Her har vi angivet nul decimaler, hvilket fjerner alle decimaler fra tallet.

I dette tilfælde blev tallet rundet op.

TRUNC() Funktion

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

SELECT TRUNC(1234.56, 0)
FROM DUAL;

Resultat:

1234

TRUNC() funktion afkorter et tal til en given decimal. Der sker ingen afrunding. Derfor blev dette tal afkortet til nul decimaler uden afrunding.

CAST() Funktion

Her er et eksempel, der bruger CAST() funktion:

SELECT CAST(1234.56 AS INT) 
FROM DUAL;

Resultat:

1235

CAST() funktion konverterer sit argument til en anden datatype. I dette tilfælde konverterede vi tallet til et heltal. Heltal har ingen decimaler, og derfor fjernes alle brøkdele fra resultatet (inklusive decimaltegnet). Bemærk, at resultatet er rundet op.


  1. Konverter BufferedInputStream til billede

  2. Postgres Kopier fra Variable med CSV-data

  3. Ydeevne overraskelser og antagelser:Vilkårlig TOP 1

  4. 2 måder at returnere servernavnet på i SQL Server (T-SQL)