【问题标题】:Why is the default size of nvarchar is 255 (MSSQL Server)?为什么 nvarchar 的默认大小是 255 (MSSQL Server)?
【发布时间】:2014-04-30 17:59:32
【问题描述】:

为什么nvarchar 的默认大小是 255 (MSSQL Server)? 我的意思是为什么不是 256?

我应该使用nvarchar(63) 而不是nvarchar(64) 等等... 127 而不是 128?

我尝试用谷歌搜索这个问题,但没有找到任何全面的答案。


已编辑:

关于默认尺寸:这只是我的假设。 Hibernate 和 EclipseLink(java 持久性框架)将 String 转换为 nvarchar(255),所以我认为这是一种标准。

【问题讨论】:

  • SQL Server 上的默认大小为 NOT 255。你从哪里得到这些信息的?
  • 这只是我的假设。 Hibernate 和 EclipseLink(java 持久性框架)将 String 转换为 nvarchar(255),所以我认为这是一种标准。
  • 那么 Hibernate 和 EclipseLink 有默认长度,但 SQL Server 没有。而且我认为默认长度是基于一些城市传说,使用 255 作为长度会有所不同
  • 关于 SQL Server 阅读 @aaron-bertrand 博客 Bad habits to kick : declaring VARCHAR without (length)

标签: sql sql-server tsql types


【解决方案1】:

documentation 很清楚:

当 n 未在数据定义或变量声明中指定时 语句,默认长度为1。当n没有指定时使用 CAST 和 CONVERT 函数,默认长度为 30。

始终为这些变量使用长度规范。

关于你的第二个问题。 varcharnvarchar 类型对每个值的值长度进行编码。我不确定 SQL Server 是否使用 1 个字节的长度达到 255,然后使用 2 个字节的长度达到 4000/8000。 max 确实使用 4 字节。 (现在所有这些都可以溢出到其他页面。)通常,对于可变字符串,您应该使用一个足够大的值来包含任何您想要包含的内容,因此您不必使用 @ 更改长度987654325@。仅使用特定值所需的存储空间,因此稍长的声明不会影响性能。

请注意,对于 charnchar,您需要尽可能短的长度,因为列实际上会占用该存储空间。

【讨论】:

    猜你喜欢
    • 2012-11-08
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 2011-03-09
    • 1970-01-01
    • 2013-06-23
    相关资源
    最近更新 更多