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

4 modi per formattare un numero senza decimali in Oracle

Quando utilizzi Oracle Database, puoi utilizzare funzioni come TO_CHAR(number) per restituire i numeri come una stringa. Ciò ti consente di formattare il numero in modo che abbia un numero specifico di posizioni decimali, incluse le posizioni decimali, se è quello che vuoi.

Puoi anche usare funzioni come ROUND(number) e TRUNC(number) per arrotondare o troncare il numero senza decimali.

C'è anche il CAST() funzione che ti consente di eseguire il cast di un tipo di dati come intero, rimuovendo efficacemente qualsiasi posizione decimale.

Il TO_CHAR() Funzione

Ecco un esempio che utilizza il TO_CHAR(number) funzione:

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

Risultato:

1,235

In questo caso il mio modello di formato è composto da:

  • uno fm , che è un modificatore di formato che rimuove tutti i caratteri di riempimento iniziali e/o finali che potrebbero essere aggiunti al risultato.
  • più 9 caratteri, che rappresentano ogni cifra
  • uno G carattere, che rappresenta un separatore di gruppo in grado di riconoscere le impostazioni locali

La cosa importante da notare è che non usa il D format element, che è il carattere decimale con riconoscimento del formato. Né utilizza caratteri decimali letterali (come una virgola o un punto). E poiché non ha caratteri decimali, ovviamente non ci sono cifre dopo tale carattere.

Se fatto avere un carattere decimale, qualsiasi 9 o 0 gli elementi a destra di esso potrebbero comportare l'inclusione di cifre decimali nel risultato.

Esempio:

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

Risultato:

7.00

Per eliminare gli zeri finali, possiamo cambiare 0 caratteri in 9 S. Tuttavia, rimuovendo il fm modificatore può comportare la visualizzazione di zeri finali anche quando si utilizza il 9 elemento di formato.

Ecco un confronto per illustrare cosa intendo:

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

Risultato:

     r1    r2        r3 
_______ _____ _________ 
7.00    7.      7.00   

Il ROUND() Funzione

Ecco un esempio che utilizza il ROUND(number) funzione:

SELECT ROUND(1234.56, 0)
FROM DUAL;

Risultato:

1235

Il ROUND() La funzione arrotonda un numero a una determinata cifra decimale. Qui, abbiamo specificato zero posizioni decimali, che rimuove tutte le posizioni decimali dal numero.

In questo caso, il numero è stato arrotondato per eccesso.

Il TRUNC() Funzione

Ecco un esempio che utilizza il TRUNC(number) funzione:

SELECT TRUNC(1234.56, 0)
FROM DUAL;

Risultato:

1234

Il TRUNC() La funzione tronca un numero in una determinata posizione decimale. Non si verifica alcun arrotondamento. Pertanto, questo numero è stato troncato a zero posizioni decimali, senza arrotondamento.

Il CAST() Funzione

Ecco un esempio che utilizza CAST() funzione:

SELECT CAST(1234.56 AS INT) 
FROM DUAL;

Risultato:

1235

Il CAST() la funzione converte il suo argomento in un tipo di dati diverso. In questo caso abbiamo convertito il numero in un numero intero. I numeri interi non hanno posizioni decimali, quindi tutte le parti frazionarie vengono rimosse dal risultato (incluso il carattere decimale). Nota che il risultato è stato arrotondato per eccesso.