为什么nvarchar
的默认大小为255(MSSQL Server
)?
我的意思是为什么不256?
我应该使用nvarchar(63)
代替nvarchar(64)
等等...... 127而不是128?
我试图谷歌这个问题,我没有找到任何全面的答案。
编辑:
关于默认大小:这只是我的假设。 Hibernate和EclipseLink(java持久性框架)将String转换为nvarchar(255),所以我认为这是一种标准。
答案 0 :(得分:6)
documentation非常明确:
在数据定义或变量声明中未指定n时 声明,默认长度为1.使用时未指定n CAST和CONVERT函数,默认长度为30。
始终对这些变量使用长度规范。
至于你的第二个问题。类型varchar
和nvarchar
编码每个值的值的长度。我不确定SQL Server是否使用1个字节的长度最多为255,然后2个字节的长度最多为4000/8000。 max
确实使用4个字节。 (并且所有这些都可以溢出到其他页面。)通常,对于可变字符串,您应该使用一个足够大的值,无论您想要包含什么,所以您不必更改长度使用alter table
。仅使用特定值的必要存储空间,因此稍长的声明不会影响性能。
请注意,对于char
和nchar
,您需要尽可能短的长度,因为该列实际上会占用该存储空间。