- 积分
- 40165
- 好友
- 记录
- 主题
- 帖子
- 听众
- 收听
|
nvarchar与Varchar的区别和存储范围
本来这个问题其实网上有好些了,只不过群里有同志讨论这个问题,而且我发现有点误区,所以再次重申一下吧。先看看聊天记录- 【甘肃】羽毛<> 9:42:08
- 秦兴国用(2001)字第15-85(1)号
- 谁给我解释一下,这个字符串为什么没法存入到SqlServer nvarchar(20)
- 【甘肃】羽毛<> 9:42:18
- 说字符串过长了。
- 瞌睡虫() 9:42:59
- 怎么一个餐饮的软件还有文章模块?
- 【甘肃】羽毛<> 9:43:04
- 我怎么数都只有28个字节啊。
- ♂站长苏飞<> 9:44:04
- 28个怎么存到20个字节里呢?
- 【甘肃】羽毛<> 9:44:05
- 这什么情况。
- 【甘肃】羽毛<> 9:44:02
-
- ♂站长苏飞<> 9:44:24
- 字符过长
- 【甘肃】羽毛<> 9:44:26
- nvarchar(20) 不 应该是 40个字节吗?
- 【甘肃】羽毛<> 9:44:53
- 可是去掉一个字
- 秦兴国用(2001)字第15-85(1)
- ♂站长苏飞<> 9:44:56
- 谁给你说的
- 【甘肃】羽毛<> 9:45:01
- 这样就能放进去
- 【甘肃】羽毛<> 9:45:04
- 这说不通啊
- 【甘肃】羽毛<> 9:45:24
- 哦我知道了
- 【甘肃】羽毛<> 9:45:30
- 理解错误
- 【甘肃】羽毛<> 9:46:10
- 我一直以为 nvarchar(1) 能存储 两个英文字母呢
- 380917661() 9:46:55
-
- ♂乜、 許() 9:47:00
- 一个汉字=2个char
- 【甘肃】羽毛<> 9:47:16
- 我是怎这么理解的
- 【甘肃】羽毛<> 9:47:39
- 所以我以为能存两个 数字或英文
- ♂站长苏飞<> 9:47:48
- nvarchar本身就是分配的两个
- 【甘肃】羽毛<> 9:49:13
- 当时本身只能存 一个 ,是把。
- ♂站长苏飞<> 9:49:30
- Varchar与Nvarchar的区别就是一个占的空间大,一个小点,但是这和他能存储多少数据无关,
- ♂站长苏飞<> 9:49:38
- 你后面写的是几就只能存储几个
- 【甘肃】羽毛<> 9:49:56
- 了解
复制代码 先看看他们的定义
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占一个,只是占的空间不一样,但是存储的数据多少是一样的,比较- nvarchar(3) 只能存储三个字符,不区别汉字和英文
- varchar(3)只能存储三个字符,不区别汉字和英文
复制代码 可以看出他们的存储的数据个数是相同的。
|
|