Как изменить точность десятичного столбца на сервере Sql?

85

Есть ли способ изменить точность существующего десятичного столбца в Sql Server?

Эндрю Джонс
источник

Ответы:

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

Просто поставьте decimal(precision, scale), заменив точность и масштаб желаемыми значениями.

Я не тестировал это с данными в таблице, но если вы измените точность, вы потеряете данные, если новая точность будет ниже.

ВанСкален
источник
2
Это сработало для меня при увеличении точности десятичного (18,2) до десятичного (18,3).
Ребекка
Спасибо, так просто, все еще трудно найти.
Philippe Lavoie
Если у вас есть 16-значное (общее) число и вы увеличиваете шкалу, будет ли оно вытеснено цифрами более высокого порядка, чтобы освободить место для двух новых десятичных знаков? К сожалению, сейчас я не могу это проверить.
user420667
12
Чтобы ответить на свой вопрос, я создал sqlfiddle: sqlfiddle.com/#!3/4b8cb/1/0 . Ответ заключается в том, что изменение десятичного числа (18,2) на десятичное (18,3) приведет к ошибке при изменении таблицы. десятичное (18,2) в десятичное (19,3), хотя должно работать.
user420667
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+.

Bnieland
источник
0
ALTER TABLE (Your_Table_Name) MODIFY (Your_Column_Name) DATA_TYPE();

Для вас проблема:

ALTER TABLE (Your_Table_Name) MODIFY (Your_Column_Name) DECIMAL(Precision, Scale); 
H Shah
источник
-2
ALTER TABLE `tableName` CHANGE  `columnName` DECIMAL(16,1) NOT NULL;

Я использую это для переделки

4302836
источник
-3

Зайдите в менеджер предприятия, составьте таблицу, щелкните свое поле.

Сделайте десятичный столбец

В свойствах внизу есть свойство точности

qui
источник
4
Это воссоздает таблицу.
Александр Кожевников
1
В таком случае, не делайте этого: p
qui
Я никогда не понимал эту страницу с таблицей дизайна. Вы не можете вносить какие-либо изменения в тип данных, даже если это не проблема сделать это в запросе. Предположительно, страница дизайна использует запросы в фоновом режиме, я не понимаю, почему было реализовано это ограничение.
Flater
3
Вы можете отключить это через: Инструменты> Параметры> Дизайнеры - «Предотвратить сохранение изменений, требующих повторного создания таблицы».
Крис Миссал