pgAdmin의 열 데이터 유형을 varchar에서 정수로 변환하는 데 문제가 있습니다 (SQL 상태 : 22P02).
이 Postgres 스크립트를 실행 하여 character varying
데이터 유형이 있는 열을 변환하려고합니다 integer
.
ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);
이 오류가 발생합니다.
오류 : 정수에 대한 잘못된 입력 구문 : "XX"SQL 상태 : 22P02
누군가가이 문제를 해결하도록 도와 줄 수 있습니까?
답변
3 MikeOrganek
오류를 기반으로하여 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
.