varchar(8000) nvarchar(4000) varchar(max) nvarchar(max) 区别

本文详细对比了SQL中nvarchar和varchar两种字符类型的区别,主要从存储方式、存储容量以及字符编码的角度进行阐述,帮助读者理解何时使用哪种类型更合适。

nvarchar和varchar   的区别是存储方式不同:

比如说varchar(40),能存储40个字节长度的字符,存储中文字符的时候,因为中文字符1个字符就等于2个字节.所以varchar(40)只能存储20个中文字符。
nvarchar每个字符占用2个字节,nvarchar(40),就可以存储40个中文字符。nvarchar要相对于存储的字符类型。比如有些字符是占3个字节的。 

varchar(n) :n最大8000个字节,8000个英文字符,4000个汉字

nvarchar(n) :n最大4000个字符,不论英文,中文,都是按两个字节存储

 

varchar(max)和nvarchar(max)   sqlserver2005版本之后支持

 varchar(max):相当于text,支持like,也支持原本text不支持的数据库函数,兼容性好

 nvarchar(max):相当于ntext,支持like,也支持原本text不支持的数据库函数,兼容性好

Varcharnvarchar都是数据库中用于存储字符数据的类型,它们存在以下区别: - **定义方面**: - `varchar[(n)]` 是长度为n个字的可变长度且非Unicode的字符数据,n必须是一个介于1和8,000之间的数值,存储大小为输入数据的字的实际长度,所输入的数据字符长度可以为零[^3]。 - `nvarchar(n)` 是包含n个字符的可变长度Unicode字符数据,n的值必须介于1与4,000之间,字的存储大小是所输入字符个数的两倍,所输入的数据字符长度可以为零[^3]。 - **存储方式**:nvarchar按字符存储,varchar按字存储[^3]。 - **存储量**:varchar比较省空间,因为其存储大小为字的实际长度,而nvarchar是双字存储[^3]。 - **使用场景**: - 如果存储内容都是英文字符而没有汉字等其他语言符号,建议使用varchar;若含有汉字,使用nvarchar,因为nvarchar使用Unicode编码,即统一的字符编码标准,会减少乱码的出现几率[^3]。 - 对于可能涉及不同语言之间转换的项目,建议用nvarcharvarchar适合存储英文和数字,nvarchar一般用于存储中文或其他语言的输入,可防止到其他语言平台上出现乱码问题[^3]。 - **内存与磁盘存储情况**:假设varchar(100)varchar(255)都存储了90个字符的数据,硬盘上的存储空间根据实际字符长度分配,二者相同,但内存使用varchar中定义的长度的内存块来保存值。而nvarchar存储同样数据时,由于双字存储,在磁盘和内存用上会与varchar有差异,且整体用通常更多(因为双字存储)[^1]。 示例代码展示二者存储情况: ```sql -- 创建varchar表 create table a (name1 varchar(8)); insert into a values ('张红a'); -- 存储长度为5个字 insert into a values ('王一南'); -- 存储长度为6个字 -- 创建nvarchar表 create table aa (name1 nvarchar(8)); insert into aa values ('张红a'); -- 存储长度为6个字 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值