cast(varchar_col AS int) -- SQL standard
eller
varchar_col::int -- Postgres syntax shorthand
Dessa syntaxvarianter är giltiga (nästan) var som helst . Den andra kan kräva kapslingsparenteser i speciella situationer:
- PostgreSQL:Skapa index över längden på alla tabellfält
Och den första kan krävas där endast funktionell notation tillåts av syntaxbegränsningar:
- PostgreSQL - CAST vs ::operator på LATERAL tabellfunktion
Det finns ytterligare två varianter:
int4(varchar_col) -- only works for some type names
int '123' -- must be an untyped, quoted string literal
Notera hur jag skrev int4
(varchar_col)
. Det är det interna typnamnet och det finns också en funktion definierad för det. Skulle inte fungera som eller integer()
.int()
Observera också att det sista formuläret inte fungerar för array typer. måste vara int[] '{1,2,3}'
'{1,2,3}'::int[]
eller cast('{1,2,3}' AS int[])
.
Detaljer i manualen här och här .
För att vara giltig för integer
, måste strängen bestå av ett valfritt inledande tecken (+
/-
) följt av endast siffror. Inledande/efterföljande blanksteg ignoreras.