sql >> Database >  >> RDS >> Oracle

4 manieren om een ​​getal op te maken zonder decimalen in Oracle

Als u Oracle Database gebruikt, kunt u functies gebruiken zoals TO_CHAR(number) om getallen als een tekenreeks te retourneren. Dit stelt je in staat om het getal zo op te maken dat het een specifiek aantal decimalen heeft - inclusief geen decimalen, als je dat wilt.

U kunt ook functies gebruiken zoals ROUND(number) en TRUNC(number) om het getal af te ronden of af te korten zonder decimalen.

Er is ook de CAST() functie waarmee u een gegevenstype als een geheel getal kunt casten, waardoor eventuele decimalen effectief worden verwijderd.

De TO_CHAR() Functie

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

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

Resultaat:

1,235

In dit geval bestaat mijn formaatmodel uit:

  • een fm , een indelingsmodificator die voorloop- en/of opvultekens verwijdert die aan het resultaat kunnen worden toegevoegd.
  • meerdere 9 tekens, die elk cijfer vertegenwoordigen
  • een G teken, dat staat voor een locale-aware group separator

Het belangrijkste om op te merken is dat het de D . niet gebruikt format-element, dat het formaatbewuste decimale teken is. Het gebruikt ook geen letterlijke decimale tekens (zoals een komma of punt). En omdat het geen decimale tekens heeft, volgen er natuurlijk geen cijfers na zo'n teken.

Als we dat deden een decimaal teken hebben, elke 9 of 0 elementen rechts ervan kunnen ertoe leiden dat decimalen in het resultaat worden opgenomen.

Voorbeeld:

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

Resultaat:

7.00

Om de volgende nullen te onderdrukken, kunnen we de 0 . wijzigen tekens tot 9 s. Echter, het verwijderen van de fm modifier kan resulteren in het verschijnen van volgnullen, zelfs bij gebruik van de 9 formaatelement.

Hier is een vergelijking om te illustreren wat ik bedoel:

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

Resultaat:

     r1    r2        r3 
_______ _____ _________ 
7.00    7.      7.00   

De ROUND() Functie

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

SELECT ROUND(1234.56, 0)
FROM DUAL;

Resultaat:

1235

De ROUND() functie rondt een getal af op een gegeven decimaal. Hier hebben we nul decimalen gespecificeerd, waardoor alle decimalen uit het getal worden verwijderd.

In dit geval is het getal naar boven afgerond.

De TRUNC() Functie

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

SELECT TRUNC(1234.56, 0)
FROM DUAL;

Resultaat:

1234

De TRUNC() functie kapt een getal af tot een gegeven decimaal. Er vindt geen afronding plaats. Daarom is dit getal afgekapt tot nul decimalen, zonder afronding.

De CAST() Functie

Hier is een voorbeeld dat de CAST() . gebruikt functie:

SELECT CAST(1234.56 AS INT) 
FROM DUAL;

Resultaat:

1235

De CAST() functie converteert zijn argument naar een ander gegevenstype. In dit geval hebben we het getal geconverteerd naar een geheel getal. Gehele getallen hebben geen decimalen, en daarom worden alle breuken uit het resultaat verwijderd (inclusief het decimale teken). Merk op dat het resultaat naar boven is afgerond.


  1. SQL Server Database Wijzigen Luisteraar C#

  2. Hoe verander je 2 zoekopdrachten met gemeenschappelijke kolommen (A, B) en (A, C) in slechts één (A, B, C)?

  3. OBJECT_ID() gebruiken op cross-databaseobjecten in SQL Server

  4. SQL Server-gegevens invoegen met Oracle® SQL*Loader