ondalık ve sayısal (Transact-sql)

Duyarlık ve ölçeği sabit sayısal veri türleri.

  • decimal**(p,s)and numeric(p,s)**
    Sabit duyarlık ve ölçek sayıları. En fazla duyarlık kullanıldığında, geçerli değerler 10-vardır ^ 38 + 1 ile 10 ^ 38-1. ISO eşanlamlı için decimalolan decve dec(p, s). numericişlevsel olarak eşdeğer olduğunu decimal.

  • p (hassas)
    Maksimum toplam hem sol, hem de ondalık noktanın sağında depolanabilen ondalık basamak sayısı. Duyarlık 38 en büyük duyarlılık ile 1 arasında bir değer olmalıdır. Varsayılan duyarlık 18'dir.

  • s (ölçek)
    Ondalık ayırıcının sağında depolanabilir ondalık basamak sayısı. Ölçek değeri 0 ile olması gerekir p. Ölçek, yalnızca duyarlık belirtildiğinde belirtilebilir. Varsayılan ölçek 0'dır; therefore, 0 <= s <= p. Maksimum depolama boyutları, üzerinde duyarlık göre değişir.

    Hassas

    Depolama bayt

    1 - 9

    5

    10-19

    9

    20-28

    13

    29-38

    17

Ondalık ve sayısal veri dönüştürme

İçin decimalve numericveri türleri, SQL Serverduyarlık ve ölçeği her belirli birleşimi farklı veri türü olarak görmektedir. Örneğin, decimal(5,5)ve decimal(5,0)veri türleri farklı düşünülür.

De Transact-SQLifadeler sabit bir ondalık noktası ile otomatik olarak dönüştürülür içine bir numericveri değeri, en az duyarlık kullanarak ve gerekli ölçek. Örneğin, sabit 12.345 dönüştürülmüştür bir numericdeğeri 5 bir duyarlık ve ölçek 3.

Dönüştürme decimalveya numericiçin floatveya realhassas bazı kaybına neden olabilir. Converting from int, smallint, tinyint, float, real, money, or smallmoney to either decimal or numeric can cause overflow.

Varsayılan olarak, SQL Serverbir sayıya dönüştürme sırasında yuvarlama kullanan bir decimalveya numericdeğeri daha düşük bir duyarlık ve ölçeği ile. Ancak, eğer set ARITHABORT seçeneği on, SQL Servertaşması oluştuğunda bir hata yükseltir. Duyarlık ve ölçeği kaybı bir hata yükseltmek için yeterli değildir.

Dönüşüm floatdeğerleri için bilimsel gösterim kullanan decimalveya numericsadece 17 basamak duyarlığı değerlerine kısıtlanır. 17 basamaktan daha yüksek kesinliği olan değerler sıfıra yuvarlanır.

Ayrıca bkz.

Başvuru

ALTER TABLE (Transact-SQL)

CAST ve CONVERT (Transact-SQL)

Tablo (Transact-sql) oluştur

DECLARE @local\_variable (Transact-SQL)

set @ local_variable (Transact-sql)

sys.types (Transact-sql)