我想问一下数据类型。

redv 2002-12-31 12:38:45
在MSSQL中,有以下数据类型:
char nchar
varchar nvarchar
text ntext
也就是这几种数据类型间有个关系,从字面看相差一个“n”,从意义上看前者的数据是非Unicode,最大允许长度为后者的两倍;后者为Unicode,最大允许长度为前者的一半。

请问这两类数据类型如何选择,就是说我什么时候用不带“n”的数据类型,什么时候用带“n”的数据类型?并给出理由。
...全文
34 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ian2000 2003-01-02
  • 打赏
  • 举报
回复
declare @a nvarchar(20) --占40个字节
declare @b varchar(20) --占20个字节

这样才对吧!
19191919 2003-01-02
  • 打赏
  • 举报
回复
同意
pengdali 2003-01-01
  • 打赏
  • 举报
回复
因为n是用Unicode编码存储的
非n是ascii编码存储的
nvarchar最大是4000
varchar最大是8000
如果你不考虑多语言,移植性就用varchar
否则就用nvarchar
xpilot 2003-01-01
  • 打赏
  • 举报
回复
通俗点说非Unicode的varchar(8000),text(2G)这些类新的存储容量是,比Unicode的nvarchar(4000),ntext(1G)的容量多一倍,当然容量的提升所要付出的代价就是适应性的降低,比如使用非Unicode的话在不同的操作系统中可能会出现乱吗等情况.

总而言之,如果不求系统兼容性,比如只作某种语言版本的系统,大可使用非Unicode类新,不过以我经验比较偏爱使用Unicode的字段.
KnowLittle 2002-12-31
  • 打赏
  • 举报
回复
declare @a nvarchar(20) --占两个40个字节
declare @b varchar(20) --占两个20个字节

大力,为什么是两个?
hjhing 2002-12-31
  • 打赏
  • 举报
回复
如果你的字段需要支持 汉字、罗马字母等就用N
pengdali 2002-12-31
  • 打赏
  • 举报
回复
declare @a nvarchar(20) --占两个40个字节
declare @b varchar(20) --占两个20个字节

set @a=N'大力' --常量前要加N
set @a='大力'
tjan 2002-12-31
  • 打赏
  • 举报
回复
存储的数据如果仅包括英文字符和数字,那么可以选择不带 “n”的,如果包括英文字符和数字以外的字符,比如汉字、罗马字母等就需要使用带“n”的。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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