PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Conversão de tipo de dados Postgres

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() ou int() .

Observe também que o último formulário não funciona para array tipos. int[] '{1,2,3}' tem que ser '{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.