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


Ответы:


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+.


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
Это воссоздает таблицу.
Александр Кожевников

1
В таком случае, не делайте этого: p
qui

Я никогда не понимал эту страницу с таблицей дизайна. Вы не можете вносить какие-либо изменения в тип данных, даже если это не проблема сделать это в запросе. Предположительно, страница дизайна использует запросы в фоновом режиме, я не понимаю, почему было реализовано это ограничение.
Flater

3
Вы можете отключить это через: Инструменты> Параметры> Дизайнеры - «Предотвратить сохранение изменений, требующих повторного создания таблицы».
Крис Миссал
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.