Estou importando dados de uma tabela que possui feeds brutos no Varchar, preciso importar uma coluna no varchar para uma coluna de string. Eu tentei usar o <column_name>::integer
as well, to_number(<column_name>,'9999999')
mas estou recebendo erros, pois existem alguns campos vazios, preciso recuperá-los como vazios ou nulos na nova tabela.
Por favor, deixe-me saber se existe uma função para o mesmo.
postgresql
casting
Vijay DJ
fonte
fonte
Respostas:
Palpite: Se seu valor for uma sequência vazia, você poderá usar NULLIF para substituí-lo por um NULL:
fonte
Você pode ir além e restringir esse campo coalescente, como, por exemplo: -
fonte
Se você precisar tratar colunas vazias como
NULL
s, tente o seguinte:Por outro lado, se você tiver
NULL
valores que precisa evitar, tente:Eu concordo, a mensagem de erro ajudaria muito.
fonte
A única maneira de conseguir não ter um erro por causa de NULL, ou caracteres especiais ou cadeia vazia é fazendo o seguinte:
fonte
WHERE <column> != NULL
?Não sou capaz de comentar (com pouca reputação? Sou bem novo) no post de Lukas.
Na minha configuração PG
to_number(NULL)
não funciona, então minha solução seria:fonte
NULLIF()
abordagem menos detalhada . O padrão realmente define NULLIF como uma forma do predicado CASE.Se o valor contiver caracteres não numéricos, você poderá converter o valor em um número inteiro da seguinte maneira:
O operador CASE verifica a <coluna>, se corresponder ao padrão inteiro, converte a taxa em um inteiro, caso contrário, retorna 0
fonte
você pode usar esta consulta
fonte
Problema comum
Ingenuamente, digite a conversão de qualquer string em um número inteiro como esse
Frequentemente resulta no famoso erro:
Problema
O PostgreSQL não possui uma função predefinida para digitar com segurança qualquer string em um número inteiro.
Solução
Crie uma função definida pelo usuário inspirada na função intval () do PHP .
Uso
fonte