2011-03-18 5 views
2

나는 double 타입의 컬럼을 postgres 데이터베이스에 numeric 타입으로 변경하고 싶다. 제 질문은 변경 전후에주의해야 할 예방 조치 나 문제가 있습니까? 이 질문에 답변 해 주셔서 감사합니다.이중 열을 숫자로 변경하면 문제가 발생합니까?

+0

숫자 범위/정밀도 및 복식에서 /의 값에 따라 데이터가 손실 될 수 있습니다. (Doubles는 더 작은 값에서 더 높은 정밀도를가집니다). –

+0

타입 변환을하지 않을 때 범위/정밀도를 지정하지 않은 경우, 즉이 SQL 문을 실행하면 어떻게됩니까? - ALTER TABLE table_name ALTER COLUMN column_name TYPE numeric. 데이터베이스 시스템이 열을 변환하는 기본 정밀도는 얼마입니까? 테이블 정보에 정밀도가 표시되지 않습니다. 내가 알아 차린 것은, SELECT SUM (column_name) from table_name을했을 때, 부동 소수점의 측면에서 매우 작은 차이가 있었고, 열이 숫자에 비해 double 유형 일 때 더 높았다는 것입니다. –

+2

Postgres는 데이터 유형 through-and-through를 ** my guess **로 유지합니다 (예 : Numerics에서 내부적으로 double을 변환하지 않기 때문에 중간 표준에서 도입 된 표준 IEEE 부동 소수점 오류 * . 수학을 할 때 Postgres *는 숫자 정밀도를 존중해야합니다 (어쨌든 -1/3 ==?). NUMERIC에 범위/정밀도를 지정하지 않으면 store * any * range/precision에 맞게 조정됩니다. [PostgreSQL Numeric] (http://www.postgresql.org/docs/8.4/static/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL)을 참조하십시오. 이것은 또한 double 형이 더 빠르고, fsvo 형이 더 빠르다는 것을 의미합니다 ". –

답변

1

테이블을 드시겠습니까? 그것은 당신의 전체 테이블을 다시 작성합니다. 당신의 테이블이 너무 크다면, "Alter commond"를 실행하는 데 너무 오래 걸릴 것입니다. 그래서 당신의 어플리케이션에 고통 스럽습니다! 희망이 당신을 도울 것입니다.

관련 문제