Programing

PostgreSQL 8.4에서 열 데이터 유형을 문자에서 숫자로 변경하는 방법

crosscheck 2020. 7. 6. 07:54
반응형

PostgreSQL 8.4에서 열 데이터 유형을 문자에서 숫자로 변경하는 방법


다음 쿼리를 사용하고 있습니다.

ALTER TABLE presales ALTER COLUMN code TYPE numeric(10,0); 

에서 열의 데이터 유형을 변경하기 character(20)numeric(10,0)하지만 오류를 얻고있다 :

"code"열을 숫자 유형으로 캐스트 할 수 없습니다


당신은 사용할 수 있습니다 USING:

선택적 USING절은 이전 항목에서 새 열 값을 계산하는 방법을 지정합니다. 생략하면 기본 변환은 이전 데이터 유형에서 새 유형으로 캐스트 된 지정과 동일합니다. USING새로운 유형으로 구에서 암시 적 또는 할당 캐스트가없는 경우 절을 제공해야합니다.

따라서 데이터에 따라 작동 할 수 있습니다.

alter table presales alter column code type numeric(10,0) using code::numeric;
-- Or if you prefer standard casting...
alter table presales alter column code type numeric(10,0) using cast(code as numeric);

code숫자로 캐스트 할 수없는 것이 있으면 실패합니다 . USING이 실패하면 열 유형을 변경하기 전에 숫자가 아닌 데이터를 직접 정리해야합니다.


귀하의 경우 VARCHAR열 (이다 빈 문자열이 포함 되지 같은 NULL당신이 기억 하듯이 PostgreSQL을위한)을 당신은 기본을 설정하려면 다음의 라인에 뭔가를 사용해야 할 것입니다 :

ALTER TABLE presales ALTER COLUMN code TYPE NUMERIC(10,0)
            USING COALESCE(NULLIF(code, '')::NUMERIC, 0);

( 이 답변 의 도움으로 찾았습니다 )

참고 URL : https://stackoverflow.com/questions/7683359/how-to-change-column-datatype-from-character-to-numeric-in-postgresql-8-4

반응형