【问题标题】:How many characters in varchar(max)?varchar(max) 中有多少个字符?
【发布时间】:2010-12-18 04:22:20
【问题描述】:

当数据类型为 VARCHAR(MAX) 时,SQL Server 2008 数据库字段可以包含多少个字符?

【问题讨论】:

    标签: sql-server-2008 size varchar


    【解决方案1】:

    来自http://msdn.microsoft.com/en-us/library/ms176089.aspx

    varchar [ ( n | max ) ] 可变长度的非 Unicode 字符 数据。 n 可以是从 1 到 8,000。 max 表示最大值 存储大小为 2^31-1 字节。这 存储大小是实际长度 输入的数据 + 2 个字节。数据 输入的长度可以是 0 个字符。 varchar 的 ISO 同义词是 char 变化或性格变化。

    1 个字符 = 1 个字节。并且不要忘记终止的 2 个字节。所以,2^31-3 个字符。

    【讨论】:

    • 技术上,1 个字符 = 1 个字节仅适用于某些字符编码。
    • 是的。例如,DBCS 字符串会给你更少。所以,请注意这一点。
    • @Dav,是的,这也是我的考虑之一。但是由于可用的字节数,这将满足我对这种情况的需求。
    • 对于我们这些不是计算器的人来说,这大约是2.1 x 10^9 0.2 的一半。
    • 不是那种人,但是... 2^31 字节(2 gigs)...如果有足够的内部内存来处理它...一直被使用并充满它大量数据...即还有内存问题...
    【解决方案2】:

    对于快速需要此答案的未来读者:

    2^31-1 = 2 147 483 647 个字符,或大约 21.47 亿

    【讨论】:

      【解决方案3】:

      请参阅MSDN reference table for maximum numbers/sizes

      每个 varchar 的字节数(最大值), varbinary(max)、xml、文本或图像 列:2^31-1

      该列有两个字节的开销,因此实际数据的最大长度为 2^31-3 个字节。假设您使用的是单字节字符编码,则总共有 2^31-3 个字符。 (如果您使用的字符编码每个字符使用多于一个字节,则除以每个字符的总字节数。如果您使用的是可变长度字符编码,那么所有的赌注都没有了。)

      【讨论】:

        【解决方案4】:

        有一些值得一提的问题 - 您可能需要强制使用 varchar(max)

        https://dba.stackexchange.com/questions/18483/varcharmax-field-cutting-off-data-after-8000-characters

        打印只处理 8000 个字符

        How to print VARCHAR(MAX) using Print Statement?

        【讨论】:

          猜你喜欢
          • 2013-08-27
          • 1970-01-01
          • 1970-01-01
          • 2021-01-03
          • 1970-01-01
          • 2010-10-11
          • 1970-01-01
          • 2022-11-23
          • 2011-09-15
          相关资源
          最近更新 更多