Inledning

När du arbetar med data som lagras i PostgreSQL kan det hända att du har data som du föredrar att behandla som en annan datatyp. Du kan till exempel ha ett textvärde som representerar ett tal, som ”53”. För att kunna utföra beräkningar på det värdet kan det vara vettigare att konvertera värdet till ett heltal. I Postgres används funktionen CAST för att konvertera datatypen för ett värde till en annan datatyp. Värdet måste vara kompatibelt med den avsedda datatypen, annars returneras ett fel. I den här PostgreSQL-artikeln visar vi hur du använder PostgreSQL-funktionen CAST och går igenom några exempel på olika konverteringar.

Förutsättningar

För att gå vidare med den här handledningen bör två viktiga förutsättningar vara på plats:

  • Du måste ha PostgreSQL installerat och konfigurerat på din dator.
  • Du måste ha vissa grundläggande kunskaper om PostgreSQL.

PostgreSQL CAST-funktion

Det finns två sätt att CAST ett värde i PostgreSQL. I den första metoden anger vi värdet och den målinriktade datatypen inom parentesen i CAST-funktionen. Syntaxen visas nedan:

1
SELECT CAST ( VALUE AS TYPE )

Ett annat sätt att casta ett värde är att använda ::-notationen mellan värdet och den avsedda datatypen. Du kan se syntaxen nedan:

1
SELECT VALUE::TYPE

I den här syntaxen representerar value det värde som du vill casta eller ändra datatypen.type representerar den datatyp som du vill använda för det här värdet; några möjliga värden för type är INTEGER, FLOAT och CHAR.

Postgres CAST Example

Låt oss titta på några exempel på hur Postgres CAST-funktionen kan användas.

Postgres CAST to String

För vårt första exempel kastar vi ett värde som ett strängvärde. Vi kan se hur detta görs i följande SELECT uttalande:

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

Postgres CAST to Integer

Nästan ska vi konvertera ett värde med en texttyp till ett heltal. Följande uttalande visar hur det går till:

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

I exemplet nedan kastar vi ett heltalsvärde till datatypen MONEY. Vi kan se hur det fungerar i följande uttalande:

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

Postgres CAST to Interval

Vårt nästa exempel kommer att kasta ett textvärde till datatypen INTERVAL. Följande SELECT-anvisning visar hur det fungerar:

1
2
3
4
5
SELECT CAST (’1 år 2 månader 7 dagar’ AS INTERVAL);
INTERVAL
———————-
1 år 2 mons 7 dagar
(1 ROW)

Postgres CAST to Date

Vi kan också använda CAST-funktionen för att konvertera ett textvärde till en DATE-datatyp, vilket visas i exemplet nedan:

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

Här är ett annat sätt att CAST använda text som datum:

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

Postgres CAST With Trim

I exemplet nedan trimmar vi ett textvärde och kastar sedan resultatet som returneras från TRIM:

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

Postgres CAST With Concatenation

Vi kan sammanfoga två eller flera strängar med hjälp av operatören ||. I vårt sista exempel ska vi concatenera ett strängvärde med ett datumvärde som kastas till TEXT. Följande instruktion visar hur det går till:

1
2
3
4
5
SELECT ’Det aktuella datumet är ’ || CAST( CURRENT_DATE AS TEXT );
?COLUMN?
——————————–
The CURRENT DATE IS 2020-03-28
(1 ROW)

Slutsats

När du frågar efter data i PostgreSQL kan det hända att du vill att värdena för vissa kolumner ska konverteras till en annan datatyp. Att ändra datatypen kan göra det lättare att utföra beräkningar och bearbetningsoperationer på de data som returneras. I den här artikeln visade vi hur du använder Postgres CAST-funktionen för att konvertera ett värdes datatyp. Om du har följt med i alla de exempel som presenteras i den här artikeln kommer du att kunna använda CAST-funktionen effektivt i dina egna PostgreSQL-förfrågningar.

Lämna ett svar

Din e-postadress kommer inte publiceras.