char、nchar、varchar、nvarchar 的区别

请看表:

char(n)定长储存ANSI字符不足的补英文半角空格索引效率高,程序里面使用trim去除多余空白n必须是介于1和8000之间的数值,储存大小为n个字节
nchar(n)定长储存Unicode字符不足的补英文半角空格处理unicode数据类型(所有的字符使用两个字节表示)n必须是介于1和4000之间的数值,储存大小为n字节的两倍
varchar(n)变长储存ANSI字符根据数据长度自动变化效率没char高  灵活n必须是介于1和8000之间的数值,储存大小为输入数据字节的实际长度,而不n个字节。
nvarchar(n)变长储存Unicode字符根据数据长度自动变化处理unicode数据类型(所有的字符使用两个字节表示)n的值必须介于1与4000之间。储存大小为n字节的两倍。

技巧:

确定了存储的数据长度,而且不包括中文,可以选择char类型。

确定了存储的数据长度,但可能包括中文,可以选择nchar类型。

不确定存储的数据长度,存储只有英文、数字的最好用varchar。

不确定存储的数据长度,也有可能有中文,可以选择nvarchar类型。

如果还为了这个纠结,就直接看看后面的概括吧。

一般如果用到中文或者其它特殊字符,我就会使用n开头的类型,否则的话直接使用var开头的。 

拓展:

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。,0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。

 如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小张自由—>张有博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值