pgAdmin의 열 데이터 유형을 varchar에서 정수로 변환하는 데 문제가 있습니다 (SQL 상태 : 22P02).

Aug 16 2020

이 Postgres 스크립트를 실행 하여 character varying데이터 유형이 있는 열을 변환하려고합니다 integer.

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

이 오류가 발생합니다.

오류 : 정수에 대한 잘못된 입력 구문 : "XX"SQL 상태 : 22P02

누군가가이 문제를 해결하도록 도와 줄 수 있습니까?

답변

3 MikeOrganek Aug 16 2020 at 12:21

오류를 기반으로하여 XX변환 할 수없는 일부 값이있는 것처럼 보입니다 integer. 를 발급하기 전에 해당 값을 수정해야합니다 alter table.

이 쿼리로 잘못된 값을 찾으십시오.

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

!~는 IS NOT정규식 일치합니다. 정규식은 값의 시작 부분에 고정되고, 0 또는 1 개의 하이픈 문자와 일치 ^하는 선택적 마이너스 기호 -{0,1}를 고려한 다음 값의 끝에있는 나머지 문자가 모두 \d+$.

XX이 패턴과 일치하지 않는 모든 값 이 검색되며 테이블을 업데이트하거나 .NET Framework의 using일부를 수정하여 값을 처리하는 방법을 알아낼 수 있습니다 alter table.