2012-10-04 65 views
1

我想存儲的數字的長度可以超過20位,但沒有定義最大長度。SQL Server中具有最大長度的數字的數據類型

我搜索的數據類型保存最大值輸入,發現varchar(max),我想有類似numeric(max),但那不是那裏。

我應該使用什麼,使用varchar(max)是好的,但是如何驗證數字?

回答

1

使用varchar(max)是否正常,但是如何驗證數字?

您可以使用檢查約束:

CREATE TABLE Numbers (
    n varchar(max) not null, 
    constraint CK_Numeric CHECK (n not like '%[^0-9]%') 
) 

的檢查約束確保n列中沒有字符是從0-9範圍之外。這是雙重否定的,但它是表達條件的最簡單方式。如果值可以包含小數,你可能需要一個更復雜的檢查:

CREATE TABLE Decimals (
    d varchar(max) not null, 
    constraint CK_Numeric CHECK (
     d not like '%[^0-9.]%' AND 
     LEN(d) - LEN(REPLACE(d,'.','')) in (0,1)) 
) 

這是說.現在允許一次,LEN檢查確保其僅出現在字符串中的0或1次。

1

bigint的範圍爲-2^63(-9,223,372,036,854,775,808)至2^63-1(9,223,372,036,854,775,807),因此可能適合您的需求。

SQL Server中沒有更大的整數類型,因此您可能必須解決基於字符的字段(包含與在文本字段中存儲數字數據相關的所有轉換和排序問題)。

1

this

數據類型 「浮動」 definetly擁有數量最多的支持,並與309(!),數字支持數字。

這取決於如果你的號碼是整數,實數,負數可能..

想想真的深深如果你打算使用一個varchar(max)來存儲數字。數據庫中的列的類型(對我而言)是確保數據一致性的最重要的一點。所以這是可能的,但它真的有必要嗎?

+1

它並不真的讓你存儲309位數字。它允許你存儲一個數字,如果寫出來的話,需要309位數來寫,但其中很多數字都是0。最大*精確度* [只有15位數字](http://msdn.microsoft.com/zh-cn/library/ms173773.aspx)。 –

相關問題