【问题标题】:Number of Characters in SQL Server varchar(max)?SQL Server varchar(max)中的字符数?
【发布时间】:2013-08-27 03:24:30
【问题描述】:

微软关于 varchar(max) 数据类型的文档:

"变长,非Unicode字符串数据...max表示最大存储大小为2^31-1字节(2GB)。存储大小为实际长度输入的数据 + 2 个字节"

http://technet.microsoft.com/en-us/library/ms176089.aspx

我认为 2^31 字节 = 2 GB,而不是 2^31-1 字节 = 2 GB。 在这一点上我错了吗?

其中两个字节是为列开销保留的,所以问题变成了:

数据类型将存储多少个字符?
a) 2^31-3 = 2,147,483,645 字节 = 2,147,483,645 个字符
b) 2^31-2 = 2,147,483,646 字节 = 2,147,483,646 个字符

【问题讨论】:

    标签: sql sql-server database database-design data-structures


    【解决方案1】:

    数字 2^31-1 是十六进制的 0x7fffffff。它是二进制互补机器(如 x86 和几乎所有其他机器)上可能的最大 32 位正数。

    文档告诉您这是最大存储大小,它必须包含数据长度加上 2 个字节。这意味着最大数据大小为 2^31-1-2,即 2,147,483,645 (0x7FFFFFFD)。

    【讨论】:

    • +1 虽然我想看看如果你真的尝试在一个列中存储这么多数据会发生什么!
    • 知道了,现在我把“最大存储大小”想象成一个标签而不是实际的存储区域,这很有意义。
    猜你喜欢
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多