我可以将VARCHAR大小设置为大于8k但小于MAX吗?

时间:2010-02-26 19:30:52

标签: sql sql-server database sql-server-2005 tsql

从SQL 2005开始,VARCHAR(MAX)不再限制为8000字节,而是使用“溢出”页面可以达到2GB。

但是,如果我想将此列限制为10k字节呢?如果我尝试将大小参数中的任何内容放在8000以上,我似乎会收到错误。这很奇怪,因为MAX与要求2GB限制相同。就最大尺寸而言,它似乎是一种“全有或全无”。

有什么方法吗?

3 个答案:

答案 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)