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.