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.