sql >> Database >  >> RDS >> Oracle

3 manieren om een ​​getal op te maken tot 2 decimalen in Oracle

Als u Oracle Database gebruikt, kunt u functies gebruiken zoals TO_CHAR(number) om getallen terug te geven als een tekenreeks, geformatteerd tot twee decimalen (of hoeveel decimalen u ook nodig heeft).

Of u kunt functies gebruiken zoals ROUND(number) en TRUNC(number) om het getal af te ronden of af te kappen tot het vereiste aantal decimalen.

De TO_CHAR() Functie

Hier is een voorbeeld dat de TO_CHAR(number) gebruikt functie:

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

Resultaat:

1.23

In dit geval heeft het oorspronkelijke getal meer dan twee decimalen, en dus wordt het in het resultaat gewoon afgekapt tot het opgegeven aantal nullen dat volgt op het decimale/radix-teken (D ) in het formaatmodel.

De reden dat ik nullen achter het decimale teken heb gebruikt, is om indien nodig volgnullen te geven.

Voorbeeld:

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

Resultaat:

7.00

Als ik de volgende nullen niet wil, kan ik de 0 . wijzigen tekens tot 9 v.

Hier is een vergelijking van de twee:

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

Resultaat:

     r1    r2 
_______ _____ 
7.00    7.   

Met behulp van 9 s resulteerde in dit geval in een wortelteken, maar geen decimalen.

Ik moet erop wijzen dat fm is een formaatmodifier die eventuele opvulling verwijdert die op het resultaat kan worden toegepast. U kunt dit weglaten als u het niet erg vindt dat het resultaat wordt opgevuld. Hoewel, als u dit doet, u mogelijk achterliggende nullen krijgt, zelfs als u de 9 gebruikt formaatelement.

Dit gebeurt er als ik de fm verwijder uit het vorige voorbeeld:

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

Resultaat:

       r1        r2 
_________ _________ 
  7.00      7.00   

Natuurlijk bent u niet beperkt tot twee cijfers achter de komma - u kunt indien nodig meer decimalen opgeven in uw formaatmodel.

Voorbeeld:

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

Resultaat:

7.0000

De ROUND() Functie

Hier is een voorbeeld dat de ROUND(number) gebruikt functie:

SELECT ROUND(1.2573, 2)
FROM DUAL;

Resultaat:

1.26

Thij ROUND() functie rondt een getal af op een gegeven decimaal. Hier hebben we twee decimalen opgegeven, maar we hadden elk willekeurig getal kunnen specificeren.

In dit geval is het getal naar boven afgerond.

De TRUNC() Functie

Hier is een voorbeeld dat de TRUNC(number) gebruikt functie:

SELECT TRUNC(1.2573, 2)
FROM DUAL;

Resultaat:

1.25

De TRUNC() functie kapt een getal af tot een gegeven decimaal. Er vindt geen afronding plaats.


  1. Hoe kan ik lopende SUM resetten nadat deze een drempel heeft bereikt?

  2. SQLSTATE [HY000] [1045] Toegang geweigerd voor gebruiker 'gebruikersnaam'@'localhost' met behulp van CakePHP

  3. update kolommenwaarden met kolom van een andere tabel op basis van voorwaarde

  4. Het serialiseerbare isolatieniveau