【问题标题】:Can I set VARCHAR size larger than 8k but less than MAX?我可以将 VARCHAR 大小设置为大于 8k 但小于 MAX 吗?
【发布时间】:2010-02-26 19:30:52
【问题描述】:
从 SQL 2005 开始,VARCHAR(MAX) 不再限制为 8000 字节,而是可以使用“溢出”页面达到 2GB。
但是如果我想将此列限制为 10k 字节怎么办?如果我尝试将任何内容放入 8000 以上的大小参数中,似乎会出现错误。这很奇怪,因为 MAX 与要求 2GB 限制相同。就最大尺寸而言,它似乎是一种“全有或全无”。
有什么办法吗?
【问题讨论】:
标签:
sql
sql-server
database
sql-server-2005
tsql
【解决方案1】:
你可以,但它需要你实现一个 CHECK 约束:
CHECK (DATALENGTH([VarChar10000]) <= 10000)
参考:
【解决方案2】:
不,你不能。
varchar(
你可以这样做:
CREATE TABLE [dbo].[VarChar10000] ( [VarChar10000] VARCHAR(MAX) )
GO
ALTER TABLE [dbo].[VarChar10000]
ADD CONSTRAINT [MaxLength10000]
CHECK (DATALENGTH([VarChar10000]) <= 10000)
GO
检查here。
【解决方案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)