为什么nvarchar的默认大小是255(MSSQL Server)?

时间:2014-03-23 13:20:50

标签: sql sql-server tsql types

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

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

我试图谷歌这个问题,我没有找到任何全面的答案。


编辑:

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

1 个答案:

答案 0 :(得分:6)

documentation非常明确:

  

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

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

至于你的第二个问题。类型varcharnvarchar编码每个值的值的长度。我不确定SQL Server是否使用1个字节的长度最多为255,然后2个字节的长度最多为4000/8000。 max确实使用4个字节。 (并且所有这些都可以溢出到其他页面。)通常,对于可变字符串,您应该使用一个足够大的值,无论您想要包含什么,所以您不必更改长度使用alter table。仅使用特定值的必要存储空间,因此稍长的声明不会影响性能。

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