Casting in PostgreSQL

Casting dei tipi di dati in Postgresql

La conversione dei dati è comune in tutti i paradigmi di programmazione soprattutto quando si gestiscono le transazioni nei database. Come in altri database, il database postgresql prevede operazioni CAST che permettono la conversione di un tipo di dati in un altro. Ci sono varie operazioni CAST in Postgresql per convertire stringhe in interi, casting in booleani, casting di stringhe in date e viceversa. Questo articolo illustra con esempi le funzioni dell’operatore CAST in postgresql. Quando si usa questo operatore si utilizza la seguente sintassi:

1
CAST (expression AS target_type );

dove l’espressione può essere una costante, una colonna di tabella o un’espressione che valuta un valore specifico. Il target_type è il tipo di dati di destinazione a cui la nostra espressione risulterà dopo la conversione.Un’altra versione del casting in postgresql comporta l’uso dell’operatore ::. La sintassi in questo caso è la seguente:

1
Expression :: type

Facciamo ora qualche esempio utilizzando l’operatore CAST.

Fusione da stringa a intero

Per convertire una stringa in un intero, usiamo la seguente espressione

1
2
SELECT
CAST (‘500’ AS INTEGER);

Questa illustrazione fa il cast del tipo stringa “500” in un tipo intero 500. Una cosa chiave da ricordare è che una conversione di successo avviene quando il tipo di dati di destinazione è compatibile con l’espressione. Usando l’esempio sopra, postgresql avrebbe un errore di conversione del tipo quando sostituiamo l’espressione “500” con “a500” poiché non sono compatibili.

Postgres cast to Boolean

Il cast delle espressioni in Boolean le converte in tipi di dati logici. Di seguito è riportato un esempio che utilizza la funzione CAST ( ) per convertire le espressioni di stringhe, char e interi in tipi di dati booleani.

1
2
3
4
5
6
7
SELECT
CAST(‘1’ as BOOLEAN),
CAST(‘0’ as BOOLEAN);
CAST(‘true’ AS BOOLEAN),
CAST(‘false’ as BOOLEAN),
CAST(‘T’ as BOOLEAN),
CAST(‘F’ as BOOLEAN);

Postgresql cast timestamp to date

Abbiamo ottenuto la data esatta da un timestamp specifico usando Cast :: operator con il timestamp come input e aggiungendo il suffisso ::date:

La sintassi è la seguente:

1
SELECT expression ::TIMESTAMP::DATE;

Fate un esempio quando volete estrarre da ‘2019-07-13 1:20:50′ a ‘2019-07-13’ La nostra query Cast sarebbe:

1
SELECT ‘2019-07-13 1:20:50’::TIMESTAMP::DATE;

Postgresql cast double precision to numeric.

L’espressione a doppia precisione prende più punti decimali rispetto ai tipi di dati float. Nel caso della memoria del processore, i tipi a doppia precisione possono occupare fino a 64 bit di memoria. Quando si converte da doppia precisione, è abbastanza simile all’arrotondamento dell’espressione. Tuttavia, il casting viene usato quando vogliamo ottenere il risultato preciso dall’espressione. Nell’esempio qui sotto, useremo l’operatore cast :: insieme all’istruzione Select per illustrare la conversione.

Sintassi : SELECT (Double precision :: numeric);SELECT (33.135941093 :: numeric);

Un modo alternativo di farlo è usare la funzione cast () come indicato qui sotto:

Sintassi :

SELECT CAST (Double precision AS numeric)

1
2
SELECT
CAST ( 33.135941093 AS numeric)

Postgresql Cast stringa a una data

L’esempio seguente illustra il casting stringa a data utilizzando il comando sql SELECT:

1
2
3
SELECT
CAST (‘2019-07-14’ COME DATA),
CAST (’13-JULY-2019′ COME DATA);

Nell’esempio convertiamo prima la stringa ‘2019-07-14′ in 14 luglio 2019 mentre nella seconda parte convertiamo ’13-luglio-2019’ in 13 luglio 2019.

Conclusione

Vi abbiamo mostrato diverse tecniche di fusione insieme a diversi esempi. Speriamo che abbiate trovato utile uno di questi esempi e che siate in grado di applicare ciò che avete imparato alla vostra specifica applicazione.

Se avete bisogno di aiuto per impostare o gestire il vostro database PostgreSQL non esitate a contattare noi di Object Rocket per discutere i dettagli del vostro progetto e determinare se possiamo aiutarvi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.