Возникли проблемы при попытке преобразовать тип данных столбца в pgAdmin из varchar в целое число (состояние SQL: 22P02)
Я просто пытаюсь преобразовать столбец с character varyingтипом данных integer, запустив этот бит сценария Postgres:
ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);
и я получаю эту ошибку:
ОШИБКА: недопустимый синтаксис ввода для целого числа: «XX» Состояние SQL: 22P02
Может кто-нибудь помочь мне решить эту проблему, пожалуйста?
Ответы
Основываясь на полученной ошибке, похоже, что у вас есть некоторые значения, XXкоторые нельзя преобразовать в файл integer. Вам нужно будет исправить эти значения перед выпуском alter table.
Найдите неверные значения с помощью этого запроса:
select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';
Это совпадение !~с NOTрегулярным выражением. Регулярное выражение привязывается к началу значения с помощью ^, учитывает необязательный знак минус с -{0,1}, который соответствует нулю или одному символу дефиса, а затем гарантирует, что все остальные символы до конца значения являются цифрами с \d+$.
XXБудут извлечены любые значения, которые не соответствуют этому шаблону, и вы можете выяснить, как с ними бороться, обновив таблицу или изменив usingчасть вашего alter table.