有时候设计字段的时候,碰到nvarchar和varchar时候,是有点犹豫。所以今天就来探个究竟把。

(一)  varchar是非Unicode可变长度类型,nvarchar是Unicode编码可变长度类型

DECLARE @name AS VARCHAR(50)='我是中国人test'
SELECT @name AS Name,
DATALENGTH(@name) AS [Length]

DECLARE @nname AS NVARCHAR(50)='我是中国人test'
SELECT @nname AS Name,
DATALENGTH(@nname) AS [Length]

(二)它们两者的最大长度不一样

nvarchar的最大值是4000

varchar最大值是8000

(三) varchar能存储的字节数就是它的长度,nvarchar能存储的字节数是它的长度乘2

CREATE TABLE Test
(vStr varchar(10),nStr nvarchar(10)
)--对于数字
INSERT INTO [dbo].[Test] VALUES('1234567890','1234567890')--对于字母
INSERT INTO [dbo].[Test] VALUES('abcdefghik','abcdefghik')--对于汉字
INSERT INTO [dbo].[Test] VALUES('我是中国人','我是中国人我爱我祖国')--对于汉字和字母
INSERT INTO [dbo].[Test] VALUES('我是中国zz','我是中国人zhang')

(四) 实际开发中,如何选择,到底是用哪个好呢?

总的来说,我是比较推崇使用nvarchar

有人说,varchar比nvarchar更省空间,应该更多的用varchar。但是我不是很赞同这个观点,首先,现在空间相对来说已经不是那么缺少了,没有必要太纠结于空间这个了,还有一点就是现在的操作系统基本上内部解析基本上都是用Unicode编码的,使用了nvarchar你可以避免每次从数据库读取或写入时候,进行编码转换,转换需要时间,并且很容易出错。如果出错,恢复回来可没那么简单,并且nvarchar是支持多种语言的。所以我大部分时间做数据库设计的时候都是用nvarchar的。

nvarchar 和varchar区别相关推荐

  1. SQL Server中的char,nchar,varchar和nvarchar有什么区别?

    nvarchar是什么意思? SQL Server中的char , nchar , varchar和nvarchar什么区别? #1楼 char :固定长度的字符数据,最大长度为8000个字符. nc ...

  2. SQL中char\varchar\text与nchar\nvarchar\ntext的区别

    SQL中char\varchar\text与nchar\nvarchar\ntext的区别 定义 特点 定义 char char(n)是长度不可变的,用于表示非Unicode字符数据.n代表该数据类型 ...

  3. nvarchar 和varchar 在len下一致,datalength下nvarchar翻倍

    上一篇文档,写的是,老程序存储数据没有trim,导致的一些长度问题:截断字符串 和客户说是,还闹出了一个不大的笑话,当时提供脚本给客户的生产环境,用的是len,len()函数会把后面的空格自动过滤,结 ...

  4. sqlserver中的字符编码、排序规则、nvarchar和varchar、大N‘‘

    环境: sqlserver 2014 window 10 建议先阅读<细说ASCII.GB2312/GBK/GB18030.Unicode.UTF-8/UTF-16/UTF-32编码> 先 ...

  5. mysql的binary、char、varchar区别

    mysql的binary.char.varchar区别 分类: Mysql/postgreSQL 2013-09-24 18:11:46 char使用固定长度的空间进行存储,char(4)存储4个字符 ...

  6. SQL Server 2005 的nvarchar(max),varchar(max)来救火

    今天处理组织架构部分的代码出错了,还好数据库迁移到了SQL Server 2005,原来系统使用的是SQL Server 2000,随着公司规模的扩大,公司人员的急速增长,系统不断的发生了问题,经常在 ...

  7. char和varchar区别

    char是一种固定长度的类型,无论储存的数据有多少都会固定长度,如果插入的长度小于定义长度,则可以用空格进行填充.而varchar是一种可变长度的类型,当插入的长度小于定义长度时,插入多长就存多长. ...

  8. 简单描述char(n)、varchar(n)、nchar(n)、nvarchar(n)的区别

    它们的区别概括成: char,nchar :定长,速度快,占空间大,需处理 varchar,nvarchar :不定长,空间小,速度慢,无需处理 nchar.nvarchar:处理Unicode码 c ...

  9. sql server中的varchar和Nvarchar有什么区别?

    很多开发者进行数据库设计的时候往往并没有太多的考虑char, varchar类型,有的是根本就没注意,因为存储价格变得越来越便宜了,忘记了最开始的一些基本设计理论和原则,这点让我想到了现在的年轻人,大 ...

最新文章

  1. oracle10g 04030,一次ORA-04030问题的诊断(一)
  2. mysql ibatis xml配置 like_iBatis学习方法及入门总结
  3. 在vue中操作DOM--this.$nextTick()
  4. 悉尼一船只引擎爆炸男子被迫跳水:严重烧伤被送医
  5. a span做成按钮样式不选中文字
  6. 几个你可能不了解的CSS单位
  7. sas数据集怎么导出_SAS:将proc步的输出导出为数据集
  8. maven安装配置换阿里源
  9. Linux iptables常用命令
  10. 在百度实习的100天
  11. linux 文件隐藏,Linux系统怎么隐藏文件夹和文件?
  12. Android自定义图片拼图游戏案例
  13. 计算机水冷原理,水冷电脑流动的是什么“水”
  14. QT中主线程终止子线程中的死循环
  15. 免费的可视化Web报表工具,JimuReport v1.5.0版本发布
  16. animate.css插件指南
  17. SpringBoot 整合activiti5.22 实现一个完整的请假流程
  18. DOSBOX的简单使用
  19. 简单的YouTube菜单效果
  20. 亚马逊婴儿围栏CPC认证,ASTMF1004、ASTMF406、CPSIA测试标准办理

热门文章

  1. 正确使用数字化仪前端信号调理功能
  2. 常见计算机类杂志投稿方式
  3. MATLABnbsp;nbsp;median函数amp;nbs…
  4. 如何选择socks5免费代理地址呢?
  5. 让 AE 输出 MPEG
  6. css单行文本两端对齐
  7. Android应用性能优化最佳实践.2.3 布局优化
  8. KB,Kb单位换算,网络带宽中的Kbps和KB/s到底是什么意思?
  9. Java文件完整性校验SHA256
  10. IT项目管理小组分工情况