PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come convertire una stringa in un valore numerico in PostgreSQL

Problema:

Vorresti convertire una stringa in un valore decimale in PostgreSQL.

Convertiamo il valore in una stringa in un tipo di dati DECIMAL.

Soluzione 1:

Useremo l'operatore ::. Ecco la domanda che scriveresti:

SELECT ' 5800.79 '::DECIMAL;

Ecco il risultato:

numerico
5800.79

Come puoi notare, gli spazi iniziali e finali sono stati rimossi.

Discussione:

Utilizzare l'operatore ::per convertire le stringhe contenenti valori numerici nel tipo di dati DECIMAL. Nel nostro esempio, abbiamo convertito la stringa ' 5800.79 ' in 5800.79 (un valore DECIMAL).

Questo operatore viene utilizzato per convertire tra diversi tipi di dati. È molto popolare all'interno di PostgreSQL. Puoi anche utilizzare l'operatore SQL standard, CAST() , invece del :: operatore.

Soluzione 2:

SELECT CAST(' 5800.79 ' AS DECIMAL );

Ecco il risultato:

numerico
5800.79

Nota che CAST() , come il :: operatore, rimuove gli spazi aggiuntivi all'inizio e alla fine della stringa prima di convertirla in un numero.

Il database PostgreSQL fornisce un altro modo per convertire. Usa il TO_NUMBER() funzione se è necessario convertire stringhe più complicate. Questa funzione accetta due argomenti:la stringa da convertire e la maschera di formato che indica come deve essere interpretato ogni carattere nella stringa. Vedi l'esempio seguente:

Soluzione 3:

SELECT TO_NUMBER(' 5 800,79- ', 'FM9G999D99S' );

Ecco il risultato:

numerico
-5800.79

La stringa di formato descrive la stringa contenente il numero (inserire il valore come stringa). In questo esempio, questa maschera contiene il simbolo "FM", che rimuove gli spazi iniziali e finali. Il "9" indica una cifra (nel nostro esempio, 5) e "G" rappresenta un gruppo di cifre (nel nostro esempio, uno spazio indica un gruppo di migliaia).

Successivamente, "999" indica altre tre cifre (800).

Il simbolo 'D' specifica un indicatore decimale (qui, un punto/punto '.'). Dopo il simbolo decimale viene '99', o due cifre frazionarie.

L'ultimo simbolo, 'S', specifica l'uso di un segno più o meno (il nostro numero è negativo, quindi ottiene un segno meno).

Ecco i simboli più utilizzati per questa maschera:

simbolo descrizione
FM Zeri iniziali e spazi vuoti di riempimento
9 una cifra
. punto decimale locale
G separatore di gruppo
D separatore decimale locale
S segno meno o più
L simbolo di valuta locale

Puoi trovare ulteriori informazioni sulla formattazione numerica nella documentazione di PostgreSQL.