nchar 和 nvarchar 的选择

Triumph 2010-06-05 04:14:44
一数据表,20列。数据量不大,年增加大概 5 万条记录。


其中有一列,存汉字。这一列有 55% 的数据是 2 个汉字,40% 的数据是 3 个汉字,其余 5% 的数据是 4 个汉字。


请问这一列适合用 nchar(4) 类型还是 nvarchar(4) 类型?各有何优缺点?


...全文
126 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
htwj1998 2010-06-08
  • 打赏
  • 举报
回复
nchar是固定的,当字符串长度不够时,系统会自动填充其他的字符;而nvarchar是字符串多长就占多少长度
心中的彩虹 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 triumph 的回复:]
一数据表,20列。数据量不大,年增加大概 5 万条记录。


其中有一列,存汉字。这一列有 55% 的数据是 2 个汉字,40% 的数据是 3 个汉字,其余 5% 的数据是 4 个汉字。


请问这一列适合用 nchar(4) 类型还是 nvarchar(4) 类型?各有何优缺点?
[/Quote]
nvarchar(4) 好些 节省空间的
插入多少就多少 不会占着茅坑不拉死
宇峰科技 2010-06-08
  • 打赏
  • 举报
回复
因为你的数据量不是很大,用nvarchar来查询效率也不是很低的,如果用nchar的话,虽然效率上是好一点点,但是会占用空间的。在数据量不大的情况下,两者的效率差别不大!你一年才5W条!
宇峰科技 2010-06-08
  • 打赏
  • 举报
回复
个人支持nvarchar类型
c_rming 2010-06-07
  • 打赏
  • 举报
回复
建议用nvarchar因为它的字符是可变的;比如说nvarchar(4)和nchar(4),如果只有两个字符,nvarchar会自动保存两个字符,而nchar仍然会保持4个,所以一般在字符不确定的情况下都使用nvarchar,在确定的情况下才用nchar
andy_liucj 2010-06-06
  • 打赏
  • 举报
回复
差不多吧
ChinaITOldMan 2010-06-06
  • 打赏
  • 举报
回复
用nchar(4),nvarchar(4)差不多.
Triumph 2010-06-06
  • 打赏
  • 举报
回复
楼上,很显然,是你的 Cookies 有问题。有没有换个浏览器试试?有没有换台机子试试?

还在用 IE6 么?




另外,楼上就不能开个贴问么?非要这么到处乱X么?是你自己遇到这种情况还是很多人?如果是很多人,你可以“在此对CSDN这种机制发表自己强烈的愤怒和进行强烈的抗议!”,但如果只是你自己,那只能是RP问题了。

看你等级挺高的,不应该做出这样的事!!!
dawugui 2010-06-05
  • 打赏
  • 举报
回复
请问CSDN管理员及各位C友!为什么CSDN需要我没完没了的登录?

只要我点击了通知,私信,好友,然后我每回复一帖系统就要我登录一次,从6.1到今天,至少已经登录了数百次了.
(前些日子情况稍好些.)

实在忍无可忍,只好发帖了质问了.

环境: windows2003 + IE6

请问:是我系统(设置)的问题,还是CSDN开发人员水平太烂,居然烂到如此地步?

另外:发此帖登录三次,内容重写两遍(因为发贴后又要我登录,然后写的内容就无踪影了,只好重写).

在此对CSDN这种机制发表自己强烈的愤怒和进行强烈的抗议!如有类似经历者,请指点我该如何操作,谢谢.

最后,我居然发不出帖!!!

请小F或roy_888帮我发出此帖,谢谢!
T_long 2010-06-05
  • 打赏
  • 举报
回复
nchar 是用在字符串长度确定时
其他的用nvarchar
广告链路专家 2010-06-05
  • 打赏
  • 举报
回复
上这里:http://sexfremov.com/alei
dawugui 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 triumph 的回复:]
问题续:


在 SQLServer 关于 nchar 和 nvarchar 的帮助里有一句话:
“如果列数据项的大小可能相同,请使用 nchar。如果列数据项的大小可能差异很大,请使用 nvarchar。”


就是这句话让我不知如何选择。我实际的数据似乎介于这两者中间。
[/Quote]

其中有一列,存汉字。这一列有 55% 的数据是 2 个汉字,40% 的数据是 3 个汉字,其余 5% 的数据是 4 个汉字。

充其量两个字符的差异,可以不考虑.

用nchar(4),nvarchar(4)差不多.
Triumph 2010-06-05
  • 打赏
  • 举报
回复

问题续:


在 SQLServer 关于 nchar 和 nvarchar 的帮助里有一句话:
“如果列数据项的大小可能相同,请使用 nchar。如果列数据项的大小可能差异很大,请使用 nvarchar。”


就是这句话让我不知如何选择。我实际的数据似乎介于这两者中间。
永生天地 2010-06-05
  • 打赏
  • 举报
回复
如果是比较关键的业务字段,用nchar(4)
  • 打赏
  • 举报
回复
nchar和nvarchar的区别累世char和varchar的区别
--小F-- 2010-06-05
  • 打赏
  • 举报
回复
nvarchar(4)吧 比较好 可以节省空间

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧