我想存儲的數字的長度可以超過20位,但沒有定義最大長度。SQL Server中具有最大長度的數字的數據類型
我搜索的數據類型保存最大值輸入,發現varchar(max)
,我想有類似numeric(max)
,但那不是那裏。
我應該使用什麼,使用varchar(max)
是好的,但是如何驗證數字?
我想存儲的數字的長度可以超過20位,但沒有定義最大長度。SQL Server中具有最大長度的數字的數據類型
我搜索的數據類型保存最大值輸入,發現varchar(max)
,我想有類似numeric(max)
,但那不是那裏。
我應該使用什麼,使用varchar(max)
是好的,但是如何驗證數字?
使用
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次。
bigint
的範圍爲-2^63(-9,223,372,036,854,775,808)至2^63-1(9,223,372,036,854,775,807),因此可能適合您的需求。
SQL Server中沒有更大的整數類型,因此您可能必須解決基於字符的字段(包含與在文本字段中存儲數字數據相關的所有轉換和排序問題)。
據this,
數據類型 「浮動」 definetly擁有數量最多的支持,並與309(!),數字支持數字。
這取決於如果你的號碼是整數,實數,負數可能..
想想真的深深如果你打算使用一個varchar(max)
來存儲數字。數據庫中的列的類型(對我而言)是確保數據一致性的最重要的一點。所以這是可能的,但它真的有必要嗎?
它並不真的讓你存儲309位數字。它允許你存儲一個數字,如果寫出來的話,需要309位數來寫,但其中很多數字都是0。最大*精確度* [只有15位數字](http://msdn.microsoft.com/zh-cn/library/ms173773.aspx)。 –