char、nchar、varchar、nvarchar的区别(一看你就懂)

char 和 nchar比较:

n:表示Unicode字符集,一个字符用两个字节存储

char支持的是本地默认编码,一般只支持中文和英文还有少部分日语和韩语等。

nchar是Unicode编码,是兼容世界上几乎所有语言的,当然也支持中文。

nchar占用空间比char大。比如char格式下一个字母只占用一个字节,汉语占用两个。nchar所有字符都占用两个字节。

举例1:

char(10):最大可以有10个字符,占10个字节。最多可以有10个英文或者数字,5个中文。

nchar(10):最大可以有10个字符,占20个字节。最多可以有10个英文或数字,10个中文。

注意:如果char和nchar类型的字符串长度少于括号内长度的话,系统会以空格自动填充。

varchar和nvarchar比较:

var:表示可变长度,意思是按照实际输入长度来计算存储

varchar(n):最大长度为n个字节的可变长度且非Unicode的字符数据。n 必须是一个介于 1 和 8000 之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节。

nvarchar(n):包含n个字符的可变长度Unicode字符数据。n的值必须介于 1 与 4000 之间。字节的存储大小是所输入字符个数的两倍。

举例1:

varchar(10):最大可以有10个字符(英文数字占用一个字节,汉字占用两个字节),占字节数取决于实际输入数据的字节大小。最多可以有10个英文,5个中文。

nvarchar(10):最大可以有10个字符(所有字符都将占用两个字节),占字节数取决于实际输入数据的字节大小。最多可以有10个英文,10个中文。

举例2:

两字段分别有字段值:我和coffee

varchar字段占2×2+6=10个字节的存储空间

nvarchar字段占8×2=16个字节的存储空间

所以如果字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar。

注意:

mysql中的varchar需要特别说明:

4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节)(国家标准GB2312: 一个汉字=2个字节 UTF-8:一个汉字=3个字节)

5.0版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放100个。

最后附上一篇为什么utf-8的中文是一个汉字占三个字节长度的博文:

https://blog.csdn.net/u010737354/article/details/52456570

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值