Problemas al intentar convertir un tipo de datos de columna en pgAdmin de varchar a integer (estado SQL: 22P02)
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
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.