Sammanfattning: I den här handledningen kommer vi att visa hur man använder PostgreSQL CAST-operatorn för att konvertera ett värde av en typ till en annan.

Introduktion till PostgreSQL CAST-operatorn

Det finns många fall där du vill konvertera ett värde av en datatyp till en annan. PostgreSQL ger dig operatören CAST som gör att du kan göra detta.

Nedan illustreras syntaxen för typen CAST:

Code language: SQL (Structured Query Language) (sql)

I den här syntaxen:

  • Först specificerar du ett uttryck som kan vara en konstant, en tabellkolumn, ett uttryck som utvärderar till ett värde.
  • Därefter specificerar du måldatatypen som du vill konvertera resultatet av uttrycket till.

PostgreSQL type cast :: operator

Förutom syntaxen för typ CAST kan du använda följande syntax för att konvertera ett värde av en typ till en annan:

Code language: SQL (Structured Query Language) (sql)

Se följande exempel:

Code language: SQL (Structured Query Language) (sql)

Observera att cast-syntaxen med cast-operatorn (::) är PostgreSQL-specifik och överensstämmer inte med SQL-standarden

PostgreSQL CAST-exempel

Låt oss ta några exempel på hur man använder CAST-operatorn för att konvertera ett värde av en typ till en annan.

1) Cast a string to an heltal exempel

Följande anvisning konverterar en strängkonstant till ett heltal:

Code language: SQL (Structured Query Language) (sql)

Om uttrycket inte kan konverteras till måltypen kommer PostgreSQL att ge ett fel. Se följande exempel:

Code language: SQL (Structured Query Language) (sql)
Code language: PHP (php)

2) Cast a string to a date example

Detta exempel använder CAST för att konvertera en sträng till ett datum:

Code language: SQL (Structured Query Language) (sql)

För det första konverterade vi 2015-01-01 bokstavlig sträng till January 1st 2015. För det andra konverterade vi 01-OCT-2015 till October 1st 2015.

3) Cast a string to a double example

I följande exempel försöker vi konvertera en sträng '10.2' till ett dubbelvärde:

Code language: SQL (Structured Query Language) (sql)

Whoops, vi fick följande felmeddelande:

Code language: PHP (php)

För att åtgärda detta måste du använda DOUBLE PRECISION i stället för DOUBLE enligt följande:

Code language: SQL (Structured Query Language) (sql)

4) Omvandla en sträng till ett boolskt exempel

Detta exempel använder CAST() för att omvandla strängen ”true”, ”T” till true och ”false”, ”F” till false:

Code language: SQL (Structured Query Language) (sql)

Här är resultatet:

5) Konvertera en sträng till en tidsstämpel exempel

Detta exempel använder cast-operatorn (::) för att konvertera en sträng till en tidsstämpel:

Code language: SQL (Structured Query Language) (sql)

6) Konvertera en sträng till ett intervall exempel

Detta exempel använder cast-operatorn för att konvertera en sträng till ett intervall:

Code language: SQL (Structured Query Language) (sql)

Här är resultatet:

7) Användning av CAST med tabelldata exempel

Skapa först en ratings tabell som består av två kolumner: id och rating. Datatypen för kolumnen rating är VARCHAR(1):

Code language: SQL (Structured Query Language) (sql)

För det andra lägger du in några exempeluppgifter i tabellen ratings.

Code language: SQL (Structured Query Language) (sql)

Om kraven ändras använder vi samma ratings-tabell för att lagra betyg som antal t.ex, 1, 2, 3 i stället för A, B och C:

Code language: SQL (Structured Query Language) (sql)

ratings-tabellen lagrar blandade värden, inklusive numeriska värden och strängar.

Code language: SQL (Structured Query Language) (sql)

Nu måste vi omvandla alla värden i rating-kolumnen till heltal, alla andra betyg för A, B och C kommer att visas som noll. För att göra detta använder du CASE-uttrycket med typen CAST som visas i följande fråga:

Code language: SQL (Structured Query Language) (sql)

CASE kontrollerar betyget, om det matchar heltalsmönstret konverteras betyget till ett heltal, annars returneras 0.

I den här handledningen har du lärt dig hur du använder PostgreSQL CAST för att konvertera ett värde av en typ till en annan.

  • Har den här handledningen varit till hjälp?
  • JaNej

Lämna ett svar

Din e-postadress kommer inte publiceras.