Problem z konwersją typu danych kolumny w pgAdmin z varchar na integer (stan SQL: 22P02)

Aug 16 2020

Po prostu próbuję przekonwertować kolumnę z character varyingtypem 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

3 MikeOrganek Aug 16 2020 at 12:21

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 NOTdopasowanie 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, XXktóre nie pasują do tego wzorca, zostaną pobrane i możesz dowiedzieć się, jak sobie z nimi poradzić, aktualizując tabelę lub modyfikując usingczęść pliku alter table.