SQL Server에서 십진 열의 정밀도를 어떻게 변경합니까?


85

SQL Server에서 기존 십진 열의 정밀도를 변경하는 방법이 있습니까?

답변:


157
ALTER TABLE Testing ALTER COLUMN TestDec decimal(16,1)

그냥 넣어서 decimal(precision, scale)정밀도와 스케일을 원하는 값으로 바꾸십시오.

나는 테이블의 데이터로 이것을 테스트하지 않았지만 정밀도를 변경하면 새 정밀도가 더 낮 으면 데이터가 손실 될 수 있습니다.


2
이것은 decimal (18,2)의 정밀도를 decimal (18,3)으로 늘릴 때 저에게 효과적이었습니다.
Rebecca

고마워요, 너무 간단하고 여전히 찾기가 어렵습니다.
Philippe Lavoie 2012-07-27

16 자리 (총) 숫자가 있고 스케일을 늘리면 새로운 소수점 이하 2 자리를위한 공간을 만들기 위해 상위 숫자에서 튀어 나올까요? 불행히도 지금은 이것을 테스트 할 수 없습니다.
user420667 2013-04-04

12
내 질문에 답하기 위해 sqlfiddle : sqlfiddle.com/#!3/4b8cb/1/0을 만들었습니다 . 대답은 decimal (18,2)을 decimal (18,3)으로 변경하면 테이블을 변경할 때 오류가 발생한다는 것입니다. 십진수 (18,2)에서 십진수 (19,3)까지 작동해야합니다.
user420667 2013-04-04

12

더 나은 방법이있을 수 있지만 항상 열을 새 열에 복사하고 삭제 한 다음 새 열의 이름을 다시 첫 번째 열의 이름으로 바꿀 수 있습니다.

재치 :

ALTER TABLE MyTable ADD NewColumnName DECIMAL(16, 2);
GO

UPDATE  MyTable
SET     NewColumnName = OldColumnName;
GO

ALTER TABLE CONTRACTS DROP COLUMN OldColumnName;
GO


EXEC sp_rename
    @objname = 'MyTable.NewColumnName',
    @newname = 'OldColumnName',
    @objtype = 'COLUMN'
GO

이것은 SQL Server 2008 R2에서 테스트되었지만 SQL Server 2000 이상에서 작동합니다.


0
ALTER TABLE (Your_Table_Name) MODIFY (Your_Column_Name) DATA_TYPE();

당신의 문제 :

ALTER TABLE (Your_Table_Name) MODIFY (Your_Column_Name) DECIMAL(Precision, Scale); 

-2
ALTER TABLE `tableName` CHANGE  `columnName` DECIMAL(16,1) NOT NULL;

나는 이것을 변경에 사용합니다.


-3

엔터프라이즈 관리자, 디자인 테이블로 이동하여 해당 분야를 클릭하십시오.

소수 열 만들기

하단의 속성에는 정밀도 속성이 있습니다.


4
그러면 테이블이 다시 생성됩니다.
Alexander Kojevnikov

1
이 경우에는 그렇게하지 마십시오. : p
qui

나는 디자인 테이블 페이지를 이해하지 못했습니다. 쿼리에서이 작업을 수행하는 데 문제가 없더라도 데이터 유형과 관련하여 어떤 형태의 편집도 할 수 없습니다. 아마도 디자인 페이지는 백그라운드에서 쿼리를 사용하지만이 제한이 구현 된 이유를 이해할 수 없습니다.
Flater

3
도구> 옵션> 디자이너- "테이블 다시 생성이 필요한 변경 사항 저장 방지"를 통해 비활성화 할 수 있습니다.
Chris Missal 2014
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.