从SQL 2005开始,VARCHAR(MAX)不再限制为8000字节,而是使用“溢出”页面可以达到2GB。
但是,如果我想将此列限制为10k字节呢?如果我尝试将大小参数中的任何内容放在8000以上,我似乎会收到错误。这很奇怪,因为MAX与要求2GB限制相同。就最大尺寸而言,它似乎是一种“全有或全无”。
有什么方法吗?
答案 0 :(得分:12)
您可以,但它需要您实现CHECK约束:
CHECK (DATALENGTH([VarChar10000]) <= 10000)
参考:
答案 1 :(得分:8)
不,你不能。 varchar(&lt; = 8000)或varchar(MAX)之间没有任何内容。
你可以这样做:
CREATE TABLE [dbo].[VarChar10000] ( [VarChar10000] VARCHAR(MAX) )
GO
ALTER TABLE [dbo].[VarChar10000]
ADD CONSTRAINT [MaxLength10000]
CHECK (DATALENGTH([VarChar10000]) <= 10000)
GO
检查here。
答案 2 :(得分:3)
不,你不能[直接]这样做。它是0-8000或MAX。
尝试使用说10000将给出:
The size (10000) given to the type 'varchar' exceeds the maximum allowed for any data type (8000).
但是,您可以使用带有CHECK约束的VARCHAR(MAX)列。类似的东西:
CHECK (DATALENGTH([myBigColumn]) <= 10000)