我有点困惑,因为在sql server(ntext,varchar,nvarchar等)中有许多变量类型,所以如果你给我以下字段使用的数据类型,我会更好地理解这一点.如果我错过了常见的字段类型,请告诉我.
解决方法
简要推荐:
> TEXT,NTEXT,IMAGE:所有这些类型都已弃用并计划在sql Server的未来版本中删除 – 请勿使用这些类型!
> CHAR与VARCHAR:CHAR是固定长度的,它将填充带有空格的输入到定义的长度.最适合短字符串(<5个字符),例如代码,如货币(几乎总是3个字符),美国状态(2个字符)等.另一方面,VARCHAR最适合较长的字符串,并且只存储插入/更新的字符数.如果你定义一个VARCHAR(200)并且只在该字段中插入圣诞节,那么你的字段占用9个字符(并且有一点点开销)
> NCHAR / NVARCHAR:以上的Unicode版本;每个字符总是存储2个字节,因此包含圣诞节的字段将存储9个字符并使用18个字节来执行此操作.如果您有非西欧语言字符,例如西里尔语,阿拉伯语,希伯来语,亚洲语或其他字母,则需要这些字符.
> VARCHAR(MAX)/ NVARCHAR(MAX)是TEXT和NTEXT的替代品 – 存储多达2 GByte(20亿字节)的数据 – 这是Tolstoi战争与和平的300倍以上 – 应该足以满足绝大多数案件:-)
所以你的决策树可能是这样的:
>我需要非西欧人物吗?如果是 – >使用NCHAR / NVARCHAR类型,否则使用CHAR / VARCHAR>我的字符串是否很短(<5个字符)并且通常总是相同的长度?如果是:使用CHAR,否则使用VARCHAR>我真的需要非常大量的文字吗?如果是这样,请使用VARCHAR(MAX),否则请根据您的需要调整大小