Como altero a precisão de uma coluna decimal no Sql Server?

85

Existe uma maneira de alterar a precisão de uma coluna decimal existente no Sql Server?

Andrew Jones
fonte

Respostas:

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

Basta colocar decimal(precision, scale), substituindo a precisão e a escala pelos valores desejados.

Não fiz nenhum teste com isso com os dados da tabela, mas se você alterar a precisão, estará sujeito a perder dados se a nova precisão for menor.

VanSkalen
fonte
2
Isso funcionou para mim ao aumentar a precisão de um decimal (18,2) para um decimal (18,3).
Rebecca de
Obrigado, tão simples, ainda difícil de encontrar.
Philippe Lavoie
Se você tiver um número de 16 dígitos (total) e aumentar a escala, ele irá tropeçar nos dígitos de ordem superior para abrir espaço para as 2 novas casas decimais? Infelizmente, não posso testar isso no momento.
user420667
12
Para responder à minha própria pergunta, criei um sqlfiddle: sqlfiddle.com/#!3/4b8cb/1/0 . A resposta é que alterar o decimal (18,2) para o decimal (18,3) resultará em erro ao alterar a tabela. decimal (18,2) para decimal (19,3) embora deva funcionar.
user420667
12

Pode haver uma maneira melhor, mas você sempre pode copiar a coluna em uma nova coluna, descartá-la e renomear a nova coluna de volta para o nome da primeira coluna.

a saber:

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

Isso foi testado no SQL Server 2008 R2, mas deve funcionar no SQL Server 2000+.

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

Para seu problema:

ALTER TABLE (Your_Table_Name) MODIFY (Your_Column_Name) DECIMAL(Precision, Scale); 
H Shah
fonte
-2
ALTER TABLE `tableName` CHANGE  `columnName` DECIMAL(16,1) NOT NULL;

Eu uso isto para a alteração

4302836
fonte
-3

Vá para o gerente da empresa, tabela de projetos, clique em seu campo.

Faça uma coluna decimal

Nas propriedades na parte inferior há uma propriedade de precisão

qui
fonte
4
Isso irá recriar a tabela.
Alexander Kojevnikov
1
Nesse caso, não faça isso então: p
qui
Nunca entendi aquela página da tabela de design. Você não pode fazer qualquer tipo de edição em relação ao tipo de dados, embora não haja nenhum problema em fazer isso em uma consulta. Presumivelmente, a página de design usa consultas em segundo plano, não entendo por que essa limitação foi implementada.
Flater
3
Você pode desabilitar isso via: Ferramentas> Opções> Designers - "Impedir o salvamento de alterações que exigem recriação da tabela".
Chris Missal