cast(varchar_col AS int) -- SQL standard
lub
varchar_col::int -- Postgres syntax shorthand
Te warianty składni są prawidłowe (prawie) wszędzie . Drugi może wymagać zagnieżdżenia nawiasów w szczególnych sytuacjach:
- PostgreSQL:Utwórz indeks na podstawie długości wszystkich pól tabeli
A pierwszy może być wymagany, gdy tylko funkcjonalna notacja jest dozwolona przez ograniczenia składni:
- PostgreSQL — operator CAST vs ::w funkcji tabeli BOCZNEJ
Istnieją jeszcze dwa warianty:
int4(varchar_col) -- only works for some type names
int '123' -- must be an untyped, quoted string literal
Zwróć uwagę, jak napisałem int4
(varchar_col)
. To jest nazwa typu wewnętrznego i jest też dla niego zdefiniowana funkcja. Nie działa jako lub integer()
.int()
Zwróć też uwagę, że ostatnia forma nie działa dla tablicy typy. musi być int[] '{1,2,3}'
'{1,2,3}'::int[]
lub cast('{1,2,3}' AS int[])
.
Szczegóły w instrukcji tutaj i tutaj .
Aby być prawidłowym dla integer
, ciąg musi składać się z opcjonalnego znaku wiodącego (+
/-
), po których następują tylko cyfry. Początkowe/końcowe białe znaki są ignorowane.