cast(varchar_col AS int) -- SQL standard
oder
varchar_col::int -- Postgres syntax shorthand
Diese Syntaxvarianten sind (fast) überall gültig . Die zweite kann in besonderen Situationen verschachtelte Klammern erfordern:
- PostgreSQL:Index auf Länge aller Tabellenfelder erstellen
Und die erste kann erforderlich sein, wenn nur funktionale Schreibweise durch Syntaxbeschränkungen erlaubt ist:
- PostgreSQL - CAST vs ::Operator für LATERAL-Tabellenfunktion
Es gibt zwei weitere Varianten:
int4(varchar_col) -- only works for some type names
int '123' -- must be an untyped, quoted string literal
Beachten Sie, wie ich int4
geschrieben habe (varchar_col)
. Das ist der interne Typname und es ist auch eine Funktion dafür definiert. Funktioniert nicht als oder integer()
.int()
Beachten Sie auch, dass die letzte Form nicht für array funktioniert Typen. muss int[] '{1,2,3}'
'{1,2,3}'::int[]
sein oder cast('{1,2,3}' AS int[])
.
Details im Handbuch hier und hier .
Gültig für integer
, muss die Zeichenfolge aus einem optionalen führenden Zeichen bestehen (+
/-
) nur gefolgt von Ziffern. Führende/nachgestellte Leerzeichen werden ignoriert.