最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

char、nvarchar和varchar区别

来源:动视网 责编:小OO 时间:2025-09-29 17:17:35
文档

char、nvarchar和varchar区别

这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了?首先我们先来分析3个数据类型的说明:   1.char          CHAR的长度是固定的,最长2000个字符。   2.varchar 和 varchar2         可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案         最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。         其次
推荐度:
导读这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了?首先我们先来分析3个数据类型的说明:   1.char          CHAR的长度是固定的,最长2000个字符。   2.varchar 和 varchar2         可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案         最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。         其次
这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了? 

首先我们先来分析3个数据类型的说明: 

   1. char 

          CHAR的长度是固定的,最长2000个字符。 

   2. varchar 和 varchar2 

         可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案         最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。 

         其次也有人认为varchar是最大长度为2000的可变字符串(和sql server中的varchar一致),而varchar2最大长度为4000。 

知道了他们的特点我们就来讨论下使用区别 

    1.char和varchar、varchar2 

         由于varchar和varchar2用途类似,我们先来讨论char和他们的使用区别: 

    varchar和varchar2比char节省空间,在效率上比char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。 

  varchar和varchar2虽然比char节省空间,但是如果一个varchar和varchar2列经常被修改,而且每次被修改的数 据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用 char代替varchar和varchar2会更好一些。 

    当然还有一种情况就是象身份证这种长度几乎不变的字段可以考虑使用char,以获得更高的效率。 

   2.varchar和varchar2 

    这里就进入重点了,前面的区别我们在sql server中我们已经基本了解了,大家可能都知道,最多也就是复习下 ,但oracle增加了一个varchar2类型,是大家以前所没有用到过的。 

     因为oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar,还有其他数据中一般都有varchar这个数据类型。 

     所以我得出了以下结论: 

     如果想在oracle新版本的数据库兼容就不要用varchar,如果想和oracle之外其他数据库兼容就不要用varchar2。 

================================================= 

     

nvarchar 和 varchar 的区别是存储方式不同  

varchar是按字节存储的.而带"n"的nvarchar是按字符存储的  

比如说 varchar(40),能存储40个字节长度的字符,存储中文字符的时候,因为中文字符1个字符就等于2个字节.所以varchar(40)只能存储20个中文字符.  

nvarchar(40),就可以存储40个中文字符,也就是说可以存储80个字节长度的字符.nvarchar要相对于存储的字符类型.比如有些字符是占3个字节的.  

同样的,char和nchar也一样道理。 

char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。 

varchar是变长型,它的存储空间会跟你输入的实际字符数而改变,但最大长度不能超过你指定的长度。 

nvarchar是unicode的变长型,它和char的区别很明显了,它和varchar的区别主要是存储空间大,相同长度下能容内更多的字符。 

字符集是在安装 SQL Server 时选择的,不能更改。使用 Unicode 数据类型,列可存储由 Unicode 标准定义的任何字符,包含由不同字符集定义的所有字符。Unicode 数据类型需要相当于非 Unicode 数据类型两倍的存储空间。 

Unicode 数据使用 SQL Server 中的 nchar、varchar 和 ntext 数据类型进行存储。对于存储来源于多种字 符集的字符的列,可采用这些数据类型。当列中各项所包含的 Unicode 字符数不同时(至多为 4000),使用 nvarchar 类型。当列中各 项为同一固定长度时(至多为 4000 个 Unicode 字符),使用 nchar 类型。当列中任意项超过 4000 个 Unicode字符时, 使用 ntext 类型。 

nvarchar(n):  

包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。 

varchar[(n)]:  

长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。

文档

char、nvarchar和varchar区别

这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了?首先我们先来分析3个数据类型的说明:   1.char          CHAR的长度是固定的,最长2000个字符。   2.varchar 和 varchar2         可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案         最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。         其次
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top