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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
88
0
152 100
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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

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

Это воссоздает таблицу.

Alexander Kojevnikov 23.09.2008 13:49

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

qui 23.09.2008 14:07

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

Flater 18.01.2013 19:13

Вы можете отключить это через: Инструменты> Параметры> Дизайнеры - «Предотвратить сохранение изменений, требующих повторного создания таблицы».

Chris Missal 07.02.2014 00:19
Ответ принят как подходящий

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

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

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

Это сработало для меня при увеличении точности десятичного (18,2) до десятичного (18,3).

Rebecca 16.07.2010 19:33

Спасибо, так просто, все еще трудно найти.

Philippe Lavoie 27.07.2012 06:32

Если у вас есть 16-значное (общее) число и вы увеличиваете масштаб, будет ли оно вытеснено цифрами более высокого порядка, чтобы освободить место для двух новых десятичных знаков? К сожалению, сейчас я не могу это проверить.

user420667 04.04.2013 04:53

Чтобы ответить на свой вопрос, я создал sqlfiddle: sqlfiddle.com/#!3/4b8cb/1/0. Ответ заключается в том, что изменение десятичного числа (18,2) на десятичное (18,3) приведет к ошибке при изменении таблицы. десятичное (18,2) в десятичное (19,3), хотя должно работать.

user420667 04.04.2013 22:06

Может быть лучший способ, но вы всегда можете скопировать столбец в новый столбец, отбросить его и переименовать новый столбец обратно в имя первого столбца.

а именно:

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

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

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

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

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

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

Другие вопросы по теме