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

Nei*_*l N 5 sql t-sql database sql-server sql-server-2005

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

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

有什么方法吗?

OMG*_*ies 12

您可以,但它需要您实现CHECK约束:

CHECK (DATALENGTH([VarChar10000]) <= 10000)
Run Code Online (Sandbox Code Playgroud)

参考:


Eki*_*Koc 8

你不能.无论是varchar(<= 8000)还是varchar(MAX),两者之间都没有.

你可以这样做:

CREATE TABLE [dbo].[VarChar10000] ( [VarChar10000] VARCHAR(MAX) )
GO

ALTER TABLE [dbo].[VarChar10000] 
    ADD CONSTRAINT [MaxLength10000]
    CHECK (DATALENGTH([VarChar10000]) <= 10000)
GO
Run Code Online (Sandbox Code Playgroud)

点击这里.