Sql Server'da bir ondalık sütunun hassasiyetini nasıl değiştirebilirim?


85

Sql Server'da mevcut bir ondalık sütunun hassasiyetini değiştirmenin bir yolu var mı?

Yanıtlar:


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

decimal(precision, scale)Kesinlik ve ölçeği istediğiniz değerlerle değiştirerek koyun .

Tablodaki verilerle bununla herhangi bir test yapmadım, ancak hassasiyeti değiştirirseniz, yeni hassasiyet daha düşükse veri kaybına maruz kalabilirsiniz.


2
Bu, ondalık (18,2) ondalık (18,3) için duyarlığı artırırken benim için çalıştı.
Rebecca

Teşekkürler, çok basit, bulması hala zor.
Philippe Lavoie

Eğer 16 (toplam) basamaklı bir sayıya sahipseniz ve ölçeği arttırırsanız, 2 yeni ondalık basamağa yer açmak için üst sıradaki basamakları geçecek mi? Maalesef şu anda bunu test edemiyorum.
user420667

12
Kendi sorumu cevaplamak için bir sqlfiddle oluşturdum: sqlfiddle.com/#!3/4b8cb/1/0 . Cevap, ondalık (18,2) ondalık (18,3) olarak değiştirildiğinde tabloyu değiştirirken bir hatayla sonuçlanacaktır. ondalık (18,2) ile ondalık (19,3) arası çalışır.
user420667

12

Daha iyi bir yol olabilir, ancak her zaman sütunu yeni bir sütuna kopyalayabilir, bırakabilir ve yeni sütunu ilk sütunun adına yeniden adlandırabilirsiniz.

zekaya:

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

Bu, SQL Server 2008 R2 üzerinde test edilmiştir, ancak SQL Server 2000+ üzerinde çalışmalıdır.


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

Senin için problem:

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

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

Bunu değişiklik için kullanıyorum


-3

İşletme yöneticisine gidin, tasarım tablosu, alanınıza tıklayın.

Ondalık sütun yap

En alttaki özelliklerde bir kesinlik özelliği vardır


4
Bu, tabloyu yeniden oluşturacaktır.
Alexander Kojevnikov

1
Bu durumda, bunu yapma o zaman: p
qui

O tasarım tablosu sayfasını hiç anlamadım. Bir sorguda bunu yaparken herhangi bir sorun olmasa bile, veri türü ile ilgili olarak orada herhangi bir düzenleme yapamazsınız. Muhtemelen, tasarım sayfası arka planda sorguları kullanıyor, bu sınırlamanın neden uygulandığını anlamıyorum.
Flater

3
Bunu şu yolla devre dışı bırakabilirsiniz: Araçlar> Seçenekler> Tasarımcılar - "Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önle".
Chris Missal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.