Problemas ao tentar converter um tipo de dados de coluna em pgAdmin de varchar para inteiro (estado SQL: 22P02)
Estou simplesmente tentando converter uma coluna com character varying
tipo de dados integer
executando este script Postgres:
ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);
e recebo este erro:
ERRO: sintaxe de entrada inválida para número inteiro: "XX" estado SQL: 22P02
Alguém pode me ajudar a resolver esse problema, por favor?
Respostas
Com base no erro que você obteve, parece que você possui alguns valores XX
que não podem ser convertidos em integer
. Você precisará corrigir esses valores antes de emitir o alter table
.
Encontre seus valores incorretos com esta consulta:
select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';
O !~
é o NOT
jogo regex. A regex ancora no início do valor com ^
, representa um sinal de menos opcional com -{0,1}
, que corresponde a zero ou um caractere de hífen e, a seguir, garante que os caracteres restantes até o final do valor sejam todos dígitos com \d+$
.
Quaisquer valores XX
que não correspondam a este padrão serão recuperados e você pode descobrir como lidar com eles atualizando a tabela ou modificando a using
parte de seu alter table
.