2017-11-07 4 views

답변

2

당신은 숫자 유형 VARCHAR에서 직접 변환 할 수 없습니다,하지만 당신은 임시을 만들어 제한을 해결할 수 있습니다 (숫자 :

나는 ALTER 명령하지만, arror을 받고 그것을 시도) 열을 만들고 현재 열을 기반으로 채우고 이름을 바꿉니다. 채울 때 값이 실제 숫자인지 확인해야합니다. 예를 들어 쉼표가 구분 기호, $와 같은 구두점을 포함하지 않는 경우입니다.

documentation은이 예를 제공합니다. 여기서 원래 가격 열에는 '$ 50.00'과 같은 값이 있습니다.

ALTER TABLE sales ADD COLUMN temp_price NUMERIC(10,2) DEFAULT 
    SUBSTR(sales.price, 2)::NUMERIC; 

ALTER TABLE sales ALTER COLUMN temp_price DROP DEFAULT; 

SELECT MAKE_AHM_NOW(); 

ALTER TABLE sales DROP COLUMN price CASCADE; 

ALTER TABLE sales RENAME COLUMN temp_price to price; 
+0

답장을 보내 주시면 감사하겠습니다. –

+0

내가 가진 것은 varchar 열 데이터에 '$'기호이며 숫자로 변환해야합니다. 열 데이터에서 '$'을 제거한 다음 숫자로 캐스팅을 사용했습니다. –

+0

@MonicaCellio, 이전 질문은 알고 있지만 'SUBSTR'은 함수'to_number' (x7 빠름)에서 사용하는 것이 더 좋습니다. 예를 들어'select to_number ('$ 50.0', '$ 9999.9999'); 또한이 구현은 다른 dbms에 의해 더 이식 가능하고 지원된다. – sKwa