從SQL 2005開始,VARCHAR(MAX)不再限制爲8000字節,而是使用「溢出」頁面可以達到2GB。我可以設置大於8k但小於MAX的VARCHAR大小嗎?
但是如果我想限制這一列說10k字節呢?如果我嘗試將大小參數設置爲8000以上,那麼似乎出現錯誤。這很奇怪,因爲MAX與要求2GB限制相同。就最大尺寸而言,它看起來像是一種「全部或全部」。
任何方法?
從SQL 2005開始,VARCHAR(MAX)不再限制爲8000字節,而是使用「溢出」頁面可以達到2GB。我可以設置大於8k但小於MAX的VARCHAR大小嗎?
但是如果我想限制這一列說10k字節呢?如果我嘗試將大小參數設置爲8000以上,那麼似乎出現錯誤。這很奇怪,因爲MAX與要求2GB限制相同。就最大尺寸而言,它看起來像是一種「全部或全部」。
任何方法?
你可以,但它需要你實現CHECK約束:
CHECK (DATALENGTH([VarChar10000]) <= 10000)
參考:
不,你不能這樣[直接]。它是0-8000或MAX。
嘗試使用說10000會給:
The size (10000) given to the type 'varchar' exceeds the maximum allowed for any data type (8000).
但是,您可以使用VARCHAR(MAX)列有CHECK contraint。例如:
CHECK (DATALENGTH([myBigColumn]) <= 10000)
不,你不能。 varchar(< = 8000)或varchar(MAX),之間沒有任何內容。
你可以這樣做,但:
CREATE TABLE [dbo].[VarChar10000] ([VarChar10000] VARCHAR(MAX))
GO
ALTER TABLE [dbo].[VarChar10000]
ADD CONSTRAINT [MaxLength10000]
CHECK (DATALENGTH([VarChar10000]) <= 10000)
GO
檢查here。
+1了簡單的解決方案。 – RedFilter 2010-02-26 19:37:59
Pure Awesome :) – 2010-02-26 19:38:30