cast(varchar_col AS int) -- SQL standard
ou
varchar_col::int -- Postgres syntax shorthand
Estas variantes de sintaxe são válidas (quase) em qualquer lugar . O segundo pode exigir parênteses de aninhamento em situações especiais:
- PostgreSQL:cria índice no comprimento de todos os campos da tabela
E o primeiro pode ser necessário onde apenas a notação funcional é permitida por restrições de sintaxe:
- PostgreSQL - CAST vs ::operador na função de tabela LATERAL
Existem mais duas variantes:
int4(varchar_col) -- only works for some type names
int '123' -- must be an untyped, quoted string literal
Observe como escrevi
int4
(varchar_col)
. Esse é o nome do tipo interno e também há uma função definida para ele. Não funcionaria como integer()
int()
Observe também que o último formulário não funciona para array tipos.
int[] '{1,2,3}'
'{1,2,3}'::int[]
ou cast('{1,2,3}' AS int[])
. Detalhes no manual aqui e aqui .
Para ser válido para
integer
, a string deve ser composta por um sinal inicial opcional (+
/-
) seguido apenas de dígitos. O espaço em branco à esquerda/à direita é ignorado.