为什么nvarchar的默认大小是255(MSSQL服务器)?

为什么nvarchar的默认大小是255(MSSQL服务器)?,sql,sql-server,tsql,types,Sql,Sql Server,Tsql,Types,为什么nvarchar的默认大小是255(MSSQL服务器)? 我是说为什么不呢 我应该使用nvarchar(63)而不是nvarchar(64)等等。。。127而不是128 我试图用谷歌搜索这个问题,但没有找到任何全面的答案 编辑: 关于默认大小:这只是我的假设。Hibernate和EclipseLink(java持久性框架)将字符串转换为nvarchar(255),所以我认为这是一种标准 问题很清楚: 在数据定义或变量声明中未指定n时 语句,默认长度为1。当使用时未指定n时 在CAST和C

为什么
nvarchar
的默认大小是255(
MSSQL服务器
)? 我是说为什么不呢

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

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


编辑:


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

问题很清楚:

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

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

至于你的第二个问题。类型
varchar
nvarchar
编码每个值的值长度。我不确定SQL Server是否使用1个字节表示长度达到255,然后使用2个字节表示长度达到4000/8000。
max
确实使用了4个字节。(所有的字符串现在都可以扩展到其他页面。)一般来说,对于可变字符串,您应该使用一个足够大的值来包含任何您想要包含的内容,这样您就不必使用
alter table
更改长度。只使用特定值所需的存储,因此稍长的声明不会影响性能


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

SQL Server上的默认大小不是255。你从哪里得到的信息?这只是我的假设。Hibernate和EclipseLink(java持久性框架)将字符串转换为nvarchar(255),所以我认为这是一种标准。然后Hibernate和EclipseLink有一个默认长度,但不是SQL Server。我认为默认长度是基于一些城市的传说,在SQL Server read@aaron bertrand博客中,使用255作为长度会有所不同