SqlServer中char,varchar,nchar,nvarchar的区别

在数据库中建表时,总是习惯的将一些字段定义为nvarchar,但关于它和nchar的区别,却没有细究过,今天上网仔细了解一下做个总结:

1.n代表的是Unicode字符,可以解决多语言字符集之间的转换问题。带上'n',表示你的字符串中汉字、英文字符、数字等等,存储时都是占用两个字节,这是为了防止出现乱码考虑的,而不带'n'的(char,varchar),存储时英文字符、数字占用一个字节,汉字占用两个字节。

2.‘var‘,显然是可变的意思,在sqlserver中就代表了可变存储,比如,定义了name字段:varchar(60),为其填充数据张三,则只占用6个字节,剩余54个字节未被占用(倒是节省了存储空间喔),对比而言,没有'var'的就是固定存储,上例如果定义name字段为char(60),同样填充数据张三的话,虽然也是占用6个字节,但剩余54个字节会用空格填充,也就是说,定义为固定存储的情况下,无论实际用了多少存储空间,所有空间都会被占用。

3.存储容量对比:char,varchar最多8000个英文,4000个汉字;nchar,nvarchar可存储4000个字符,无论英文还是汉字。

4.速度对比:固定存储比可变存储速度上快的多,但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉。

实际中使用的一般是varchar和nvarchar,二者再做个对比:

1.存储方式上,nvarchar是按字符存储的,varchar是按字节存储的。

2.存储量上,varchar节省空间,因为存储大小为字节实际长度,而nvarchar是双字节存储。

3.使用中,如果确定存储内容都是英文字符而没有汉字等语言符号,建议用varchar,含有汉字使用nvarchar(避免乱码)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值