Problem z konwersją typu danych kolumny w pgAdmin z varchar na integer (stan SQL: 22P02)
Po prostu próbuję przekonwertować kolumnę z character varying
typem danych na integer
, uruchamiając ten fragment skryptu Postgres:
ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);
i otrzymuję ten błąd:
BŁĄD: nieprawidłowa składnia wejściowa dla liczby całkowitej: „XX” Stan SQL: 22P02
Czy ktoś może mi pomóc w rozwiązaniu tego problemu?
Odpowiedzi
Na podstawie otrzymanego błędu wygląda na to, że masz pewne wartości XX
, których nie można przekonwertować na plik integer
. Będziesz musiał poprawić te wartości przed wydaniem alter table
.
Znajdź swoje nieprawidłowe wartości za pomocą tego zapytania:
select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';
Jest !~
to NOT
dopasowanie wyrażenia regularnego. Wyrażenie regularne jest zakotwiczone na początku wartości z ^
, uwzględnia opcjonalny znak minus z -{0,1}
, który dopasowuje zero lub jeden znak łącznika, a następnie zapewnia, że pozostałe znaki na końcu wartości są cyframi z \d+$
.
Wszelkie wartości, XX
które nie pasują do tego wzorca, zostaną pobrane i możesz dowiedzieć się, jak sobie z nimi poradzić, aktualizując tabelę lub modyfikując using
część pliku alter table
.