Casting în PostgreSQL

Casting de tipuri de date în Postgresql

Conversia datelor este comună în toate paradigmele de programare, în special atunci când se gestionează tranzacții în bazele de date. Ca și în alte baze de date, baza de date postgresql prevede operații CAST care permit conversia unui tip de date în altul. Există diverse operații CAST în postgresql pentru conversia șirurilor de caractere în numere întregi, casting în boolean, casting string în date și viceversa. Acest articol ilustrează cu exemple funcțiile operatorului CAST în postgresql. Atunci când se utilizează acest operator, se folosește următoarea sintaxă:

1
CAST (expression AS target_type );

unde expresia poate fi fie o constantă, fie o coloană de tabel, fie o expresie care se evaluează la o anumită valoare. Target_type este tipul de date țintă la care expresia noastră va rezulta după conversie. o altă versiune de casting în postgresql implică utilizarea operatorului ::. În acest caz, sintaxa este următoarea:

1
Expresie :: tip

Să luăm acum câteva exemple de utilizare a operatorului CAST.

Casting din șir de caractere în număr întreg

Când convertim un șir de caractere într-un număr întreg, folosim următoarea expresie

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

Această ilustrație a transformat tipul de șir de caractere „500” în tipul întreg 500. Un lucru esențial de reținut este că o conversie reușită are loc atunci când tipul de date țintă este compatibil cu expresia. Utilizând exemplul de mai sus, postgresql ar traversa o eroare de conversie de tip atunci când înlocuim expresia „500” cu „a500”, deoarece acestea nu sunt compatibile.

Postgres cast to Boolean

Castul expresiilor în Boolean le convertește în tipuri de date logice. Mai jos este un exemplu care utilizează funcția CAST ( ) pentru a transforma expresii de tip șiruri de caractere, char și numere întregi în tipuri de date booleene.

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

Obținem data exactă dintr-un anumit timestamp folosind Cast :: operator cu timestamp-ul ca intrare și adăugând sufixul ::date:

Sintaxa este următoarea:

1
SELECT expresie ::TIMESTAMP::DATE;

Să luăm un exemplu atunci când dorim să extragem de la ‘2019-07-13 1:20:50′ la ‘2019-07-13’ Interogarea noastră Cast ar fi:

Cast:

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

Postgresql cast double precision to numeric.

Expresia cu precizie dublă ia mai multe puncte zecimale în comparație cu tipurile de date float. În cazul memoriei procesorului, tipurile de dublă precizie pot ocupa până la 64 de biți de memorie. Atunci când se face conversia din dublă precizie, este destul de similar cu rotunjirea expresiei. Cu toate acestea, turnarea este utilizată atunci când dorim să obținem un rezultat precis din expresie. În exemplul de mai jos, vom folosi operatorul cast :: împreună cu instrucțiunea Select pentru a ilustra conversia.

Sintaxa : SELECT (Precizie dublă :: numeric);SELECT (33.135941093 :: numeric);

O altă modalitate alternativă de a face acest lucru este de a folosi funcția cast (), așa cum se indică mai jos:

Sintaxa :

SELECT CAST (Double precision AS numeric)

1
2
SELECT
CAST ( 33.135941093 AS numeric)

Postgresql Cast string to a date

Exemplul următor ilustrează castingul stringurilor în date folosind comanda sql SELECT:

1
2
3
SELECT
CAST (‘2019-07-14’ CA DATĂ),
CAST (’13-IULIE-2019′ CA DATĂ);

În exemplu, mai întâi convertim șirul ‘2019-07-14′ în 14 iulie 2019, în timp ce în a doua parte convertim ’13-iulie-2019’ în 13 iulie 2019.

Concluzie

Am arătat mai multe tehnici de turnare împreună cu mai multe exemple. Sperăm că ați găsit util unul dintre aceste exemple și că sunteți capabili să aplicați ceea ce ați învățat la aplicația dvs. specifică.

Dacă aveți nevoie de ajutor pentru configurarea sau gestionarea bazei de date PostgreSQL, nu ezitați să ne contactați la Object Rocket pentru a discuta detaliile proiectului dvs. și a stabili dacă vă putem ajuta.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.