Casting i PostgreSQL

Casting av datatyper i Postgresql

Datakonvertering är vanligt i alla programmeringsparadigm, särskilt när man hanterar transaktioner i databaser. Liksom i andra databaser tillhandahåller Postgresql-databasen CAST-operationer som gör det möjligt att konvertera en datatyp till en annan. Det finns olika kastoperationer i postgresql för att konvertera strängar till heltal, kastning till boolska tal, kastning av strängar till datum och vice versa. I den här artikeln illustreras CAST-operatörens funktioner i postgresql med exempel. Vid användning av denna operatör används följande syntax:

1
CAST (expression AS target_type );

varvid uttrycket antingen kan vara en konstant, en tabellkolumn eller ett uttryck som utvärderas till ett visst värde. Target_type är den måldatatyp som vårt uttryck kommer att resultera i efter konverteringen. en annan version av casting i postgresql innebär användning av operatören ::. Syntaxen i det här fallet är följande:

1
Uttryck :: type

Låt oss nu ta några exempel med hjälp av CAST-operatören.

Sträng till heltal Casting

När vi konverterar en sträng till ett heltal använder vi följande uttryck

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

Denna illustration kastar strängtypen ”500” till en heltalstyp 500. En viktig sak att komma ihåg är att en lyckad konvertering sker när måldatatypen är kompatibel med uttrycket. Med hjälp av exemplet ovan skulle postgresql genom ett typkonverteringsfel när vi ersätter uttrycket ”500” med ”a500” eftersom de inte är kompatibla.

Postgres cast to Boolean

Castar man uttryck till boolska omvandlas de till logiska datatyper. Nedan följer ett exempel där funktionen CAST ( ) används för att omvandla strängar, char- och integers-uttryck till booleska datatyper.

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

Vi får fram ett exakt datum från en specifik tidsstämpel med Cast :: : operatören med tidsstämpeln som indata och genom att lägga till ::date-suffixet:

Syntaxen är följande:

1
SELECT expression ::TIMESTAMP::DATE;

Titta ett exempel när du vill extrahera från ’2019-07-13 1:20:50′ till ’2019-07-13’ Vår Cast-fråga skulle vara:

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

Postgresql castar dubbel precision till numerisk.

Uttryck med dubbel precision tar fler decimaler jämfört med float-datatyper. När det gäller processorminne kan dubbelprecisionstyperna uppta upp till 64 bit av minnet. Vid konvertering från dubbel precision är det ganska likt att avrunda uttrycket. Casting används dock när vi vill få det exakta resultatet från uttrycket. I exemplet nedan använder vi cast-operatorn :: tillsammans med Select-angivelsen för att illustrera konverteringen.

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

Ett alternativt sätt att göra det på är att använda cast ()-funktionen enligt nedan:

Syntax :

SELECT CAST (Double precision AS numeric)

1
2
SELECT
CAST ( 33.135941093 AS numeric)

Postgresql Cast sträng till ett datum

Följande exempel visar hur strängar kastas till datum med hjälp av sql-kommandot SELECT:

1
2
3
SELECT
CAST (’2019-07-14’ SOM DATUM),
CAST (’13-JULY-2019′ SOM DATUM);

I exemplet konverterar vi först strängen ”2019-07-14” till 14 juli 2019 medan vi i den andra delen konverterar ”13-JULY-2019” till 13 juli 2019.

Slutsats

Vi har visat dig flera tekniker för gjutning tillsammans med flera exempel. Vi hoppas att du har funnit något av dessa exempel användbart och att du kan tillämpa det du lärt dig på din specifika applikation.

Om du behöver hjälp med att konfigurera eller hantera din PostgreSQL-databas, tveka inte att kontakta oss på Object Rocket för att diskutera detaljerna i ditt projekt och avgöra om vi kan hjälpa dig.

Lämna ett svar

Din e-postadress kommer inte publiceras.