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)
Så 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