从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