Indledning

Når du arbejder med data gemt i PostgreSQL, kan du have nogle data, som du foretrækker at behandle som en anden datatype. Du kan f.eks. have en tekstværdi, der repræsenterer et tal, som f.eks. “53”. For at kunne udføre beregninger på denne værdi kan det give mere mening at konvertere denne værdi til et heltal. I Postgres bruges funktionen CAST til at konvertere datatypen for en værdi til en anden datatype. Værdien skal være kompatibel med den ønskede datatype, ellers returneres der en fejl. I denne PostgreSQL-artikel viser vi dig, hvordan du bruger PostgreSQL CAST-funktionen og gennemgår nogle eksempler på forskellige konverteringer.

Forudsætninger

Hvor du går videre med denne vejledning, skal to vigtige forudsætninger være på plads:

  • Du skal have PostgreSQL installeret og konfigureret på din computer.
  • Du skal have et vist grundlæggende kendskab til PostgreSQL.

PostgreSQL CAST-funktion

Der er to måder at CAST en værdi på i PostgreSQL. I den første metode angiver vi værdien og den målrettede datatype inden for parentesen i CAST-funktionen. Syntaksen er vist nedenfor:

1
SELECT CAST ( VALUE AS TYPE )

En anden måde at caste en værdi på er ved at bruge ::-notationen mellem værdien og den målrettede datatype. Du kan se syntaksen nedenfor:

1
SELECT VALUE::TYPE

I denne syntaks repræsenterer value den værdi, som du ønsker at caste eller ændre datatypen.type repræsenterer den datatype, som du sigter på for denne værdi; nogle få mulige værdier af type omfatter INTEGER, FLOAT og CHAR.

Postgres CAST Eksempel

Lad os se på nogle eksempler på, hvordan du kan bruge Postgres CAST-funktionen.

Postgres CAST to String

I vores første eksempel caster vi en værdi som en strengværdi. Vi kan se, hvordan dette gøres i følgende SELECT-anvisning:

1
2
3
4
5
SELECT CAST( 5137 AS TEXT );
text
——
5137
(1 ROW)

Postgres CAST to Integer

Næste gang skal vi konvertere en værdi med en teksttype til et heltal. Den følgende erklæring viser, hvordan det gøres:

1
2
3
4
5
SELECT CAST( ‘214’ AS INTEGER );
int4
——
214
(1 ROW)

I eksemplet nedenfor caster vi en heltalsværdi til datatypen MONEY. Vi kan se, hvordan det fungerer i følgende anvisning:

1
2
3
4
5
SELECT CAST(7419 AS MONEY);
money
———–
$7.419.00
(1 ROW)

Postgres CAST to Interval

Vores næste eksempel vil kaste en tekstværdi til datatypen INTERVAL. Den følgende SELECT-anvisning viser, hvordan det fungerer:

1
2
3
4
5
SELECT CAST (‘1 år 2 måneder 7 dage’ AS INTERVAL);
INTERVAL
———————-
1 år 2 mons 7 dage
(1 RÆK)

Postgres CAST to Date

Vi kan også bruge funktionen CAST til at konvertere en tekstværdi til en DATE datatype, som det ses i eksemplet nedenfor:

1
2
3
4
5
SELECT CAST( ‘July 24, 1999’ AS DATE );
DATE
————
1999-07-24
(1 ROW)

Her er en anden måde at CAST tekst som en dato på:

1
2
3
4
5
SELECT CAST( ’24-07-99′ AS DATE );
DATE
————
1999-07-24
(1 ROW)

Postgres CAST With Trim

I eksemplet vist nedenfor trimmer vi en tekstværdi, hvorefter vi caster det resultat, der returneres fra TRIM:

1
2
3
4
5
SELECT CAST( TRIM( TRIM( LEADING ‘DATE ‘ FROM ‘DATE January 28, 1998’ ) AS DATE);
ltrim
————
1998-01-28
(1 ROW)

Postgres CAST med sammenkædning

Vi kan sammenkæde to eller flere strenge ved hjælp af ||-operatoren. I vores sidste eksempel vil vi sammenkæde en strengværdi med en datoværdi, der er castet til TEXT. Nedenstående erklæring viser, hvordan det gøres:

1
2
3
4
5
SELECT ‘Den aktuelle dato er ‘ || CAST( CURRENT_DATE AS TEXT );
?COLUMN?
——————————–
The CURRENT DATE IS 2020-03-28
(1 ROW)

Konklusion

Når du forespørger efter data i PostgreSQL, ønsker du måske, at værdierne i visse kolonner skal konverteres til en anden datatype. Ændring af datatypen kan gøre det lettere at udføre beregninger og behandlingsoperationer på de data, der returneres. I denne artikel viste vi dig, hvordan du bruger Postgres CAST-funktionen til at konvertere en værdi’s datatype. Hvis du har fulgt med i alle de eksempler, der er præsenteret i denne artikel, vil du være i stand til at bruge CAST-funktionen effektivt i dine egne PostgreSQL-forespørgsler.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.