반응형
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);
( 이 답변 의 도움으로 찾았습니다 )
반응형
'Programing' 카테고리의 다른 글
자식에서 '둘 다 추가'병합 충돌을 해결 하시겠습니까? (0) | 2020.07.06 |
---|---|
gcc / cmake를 사용하여 64 비트 Linux 시스템에서 32 비트 바이너리를 컴파일하는 방법 (0) | 2020.07.06 |
numpy 배열을 반복 (0) | 2020.07.06 |
os.walk ()를 사용하여 파이썬에서 디렉토리를 재귀 적으로 순회 (0) | 2020.07.06 |
프로젝트간에 IntelliJ Run / Debug 구성을 어떻게 공유합니까? (0) | 2020.07.06 |