http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5370|回复: 1

[Sql Server] nvarchar与Varchar的区别和存储范围

[复制链接]
发表于 2013-4-8 10:01:04 | 显示全部楼层 |阅读模式
nvarchar与Varchar的区别和存储范围
本来这个问题其实网上有好些了,只不过群里有同志讨论这个问题,而且我发现有点误区,所以再次重申一下吧。先看看聊天记录
  1. 【甘肃】羽毛<> 9:42:08
  2. 秦兴国用(2001)字第15-85(1)号
  3. 谁给我解释一下,这个字符串为什么没法存入到SqlServer nvarchar(20)
  4. 【甘肃】羽毛<> 9:42:18
  5. 说字符串过长了。
  6. 瞌睡虫() 9:42:59
  7. 怎么一个餐饮的软件还有文章模块?
  8. 【甘肃】羽毛<> 9:43:04
  9. 我怎么数都只有28个字节啊。
  10. ♂站长苏飞<> 9:44:04
  11. 28个怎么存到20个字节里呢?
  12. 【甘肃】羽毛<> 9:44:05
  13. 这什么情况。
  14. 【甘肃】羽毛<> 9:44:02

  15. ♂站长苏飞<> 9:44:24
  16. 字符过长
  17. 【甘肃】羽毛<> 9:44:26
  18. nvarchar(20) 不 应该是 40个字节吗?
  19. 【甘肃】羽毛<> 9:44:53
  20. 可是去掉一个字
  21. 秦兴国用(2001)字第15-85(1)

  22. ♂站长苏飞<> 9:44:56
  23. 谁给你说的
  24. 【甘肃】羽毛<> 9:45:01
  25. 这样就能放进去
  26. 【甘肃】羽毛<> 9:45:04
  27. 这说不通啊
  28. 【甘肃】羽毛<> 9:45:24
  29. 哦我知道了
  30. 【甘肃】羽毛<> 9:45:30
  31. 理解错误
  32. 【甘肃】羽毛<> 9:46:10
  33. 我一直以为 nvarchar(1) 能存储 两个英文字母呢
  34. 380917661() 9:46:55

  35. ♂乜、  許() 9:47:00
  36. 一个汉字=2个char
  37. 【甘肃】羽毛<> 9:47:16
  38. 我是怎这么理解的
  39. 【甘肃】羽毛<> 9:47:39
  40. 所以我以为能存两个 数字或英文
  41. ♂站长苏飞<> 9:47:48
  42. nvarchar本身就是分配的两个
  43. 【甘肃】羽毛<> 9:49:13
  44. 当时本身只能存 一个 ,是把。
  45. ♂站长苏飞<> 9:49:30
  46. Varchar与Nvarchar的区别就是一个占的空间大,一个小点,但是这和他能存储多少数据无关,
  47. ♂站长苏飞<> 9:49:38
  48. 你后面写的是几就只能存储几个
  49. 【甘肃】羽毛<> 9:49:56
  50. 了解
复制代码
先看看他们的定义
nvarchar(n):   
  包含   n   个字符的可变长度   Unicode   字符数据。n   的值必须介于   1   与   4,000   之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。   
   
  varchar[(n)]:   
  长度为   n   个字节的可变长度且非   Unicode   的字符数据。n   必须是一个介于   1   和   8,000   之间的数值。存储大小为输入数据的字节的实际长度,而不是   n   个字节。所输入的数据字符长度可以为零。  

      正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操 作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar就会出现乱码(显示为??)。
   
       我们在使用的过程 中要根据自己的项目需要,不 要一味在大众化
像一些报到系统 ,或是数据统计比较多,或是在不同语言版本的操作系统 上运行的,要注意这两个的使用
     因为varchar是变长的可以节省空间,而nvarchar字节的存储大小是所输入字符个数的两倍 所以我们如果没有必要的话建议使用前者。总之大家看看定义结合自己的系统使用为上策

大家要注意他们两者之前只是存储的占位不同,nvarchar是占两个varchar占一个,只是占的空间不一样,但是存储的数据多少是一样的,比较
  1. nvarchar(3) 只能存储三个字符,不区别汉字和英文
  2. varchar(3)只能存储三个字符,不区别汉字和英文
复制代码
可以看出他们的存储的数据个数是相同的。



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-4-9 20:49:29 | 显示全部楼层
大家什么看法?我先支持
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 04:50

© 2014-2021

快速回复 返回顶部 返回列表