【问题标题】: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)
        

        【讨论】:

          猜你喜欢
          • 2010-11-13
          • 2015-11-03
          • 1970-01-01
          • 2012-08-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-04
          • 2016-04-16
          相关资源
          最近更新 更多