Problemas al intentar convertir un tipo de datos de columna en pgAdmin de varchar a integer (estado SQL: 22P02)

Aug 16 2020

Simplemente estoy tratando de convertir una columna con character varyingtipo de datos integerejecutando este fragmento de secuencia de comandos de Postgres:

ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);

y me sale este error:

ERROR: sintaxis de entrada no válida para entero: "XX" Estado SQL: 22P02

¿Alguien puede ayudarme a resolver este problema, por favor?

Respuestas

3 MikeOrganek Aug 16 2020 at 12:21

Según el error que obtiene, parece que tiene algunos valores XXque no se pueden convertir a integer. Deberá corregir esos valores antes de emitir el alter table.

Encuentre sus valores incorrectos con esta consulta:

select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';

El !~es el NOTpartido de expresiones regulares. La expresión regular se ancla al comienzo del valor con ^, representa un signo menos opcional con -{0,1}, que coincide con cero o un carácter de guión, y luego asegura que los caracteres restantes hasta el final del valor sean todos dígitos con \d+$.

Se XXrecuperará cualquier valor de que no coincida con este patrón, y puede averiguar cómo tratar con ellos actualizando la tabla o modificando la usingparte de su alter table.