programing

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

javajsp 2023. 5. 4. 18:41

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

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

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

열의 데이터 유형을 변경하는 방법character(20)로.numeric(10,0)하지만 오류가 발생했습니다.

열 "코드"를 숫자 형식으로 캐스팅할 수 없습니다.

다음을 사용할 수 있습니다.

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

따라서 데이터에 따라 다음과 같은 작업이 가능합니다.

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숫자로 캐스팅할 수 없습니다. 사용에 실패할 경우 열 유형을 변경하기 전에 숫자가 아닌 데이터를 직접 정리해야 합니다.

만약 당신이VARCHAR열에 빈 문자열이 있습니다(와 동일하지 않음).NULLPostgre용SQL(기억나는 대로 SQL)을 사용하여 기본값을 설정해야 합니다.

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

( 답변의 도움으로 발견됨)

1단계: 요구 사항에 따라 정수 또는 숫자로 새 열 추가

2단계: 막대형 열에서 숫자 열로 데이터 채우기

3단계: 바르샤바 열

4단계: 이전 막대 열에 따라 새 숫자 열 이름 변경

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