`

浅谈char,Varchar,NVarchar的区别

阅读更多

这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 个字节。所输入的数据字符长度可以为零。

作者:Jacky.zhou

博客:http://jackyzhou.cnblogs.com/

      本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面显位置给出原文连接,否则保留追究法律责任的权利。

分享到:
评论

相关推荐

    SQL数据类型nchar_char_varchar与nvarchar区别

    nchar_char_varchar与nvarchar有何区别?

    Sqlserver中char,nchar,varchar与Nvarchar的区别分析

    在SQL Server中,字符数据类型是用来存储文本信息的,包括char、nchar、varchar和nvarchar。这四个数据类型都有各自的特点和用途,下面我们逐一详细分析它们的区别。 1. **char类型**: - char是固定长度的字符...

    SQL2005中char nchar varchar nvarchar数据类型的区别和使用环境讲解

    本文将详细介绍char、nchar、varchar和nvarchar这四种数据类型的区别以及它们的适用环境。 1. **char**: - char是一种固定长度的非Unicode字符数据类型,长度范围为1到8,000个字节。 - 不论存储的数据实际长度...

    浅析Oracle中char和varchar2的区别 电脑资料.docx

    Oracle 中 char 和 varchar2 的区别 Oracle 中 char 和 varchar2 是两种常用的字符串数据类型,它们之间的区别是很多开发者经常忽视的。下面我们将详细分析 Oracle 中 char 和 varchar2 的区别。 首先,char 是定...

    SQL Server数据类型char、nchar、varchar、nvarchar的区别浅析

    本文主要探讨了四个常见的字符数据类型:char、nchar、varchar和nvarchar,它们各自具有独特的特性和用途。 1. **char数据类型** - `char`是一种固定长度的非Unicode字符数据类型,适用于存储长度恒定的文本信息。...

    SQLServer中char、varchar、nchar、nvarchar的区别

    在SQL Server数据库管理系统中,字符数据类型是存储文本信息的基础,包括`char`、`varchar`、`nchar`和`nvarchar`等几种常见的类型。这些数据类型在存储字符串时有着不同的特性和用途,理解它们之间的区别对于正确...

    char、varchar、nchar、nvarchar四种类型的区别

    ### char、varchar、nchar、nvarchar 四种类型的区别 在数据库设计中,选择合适的字段类型对于确保数据的准确性和提高查询效率至关重要。对于字符类型的字段,SQL Server 提供了 `char`、`varchar`、`nchar` 和 `...

    基于SQL Server中char,nchar,varchar,nvarchar的使用区别

    对于程序中的一般字符串类型的字段,SQL Server中有char、varchar、nchar、nvarchar四种类型来对应,那么这四种类型有什么区别呢,这里做一下对比。 1.定长或变长 所谓定长就是长度固定,当要保存的数据长度不够时将...

    对比MySQL中int、char以及varchar的性能

    本文主要讨论了int、char和varchar这三种常见数据类型在性能上的差异。通常,这些差异在无索引和有索引的情况下的表现会有所不同。 首先,从无索引的全表扫描角度来看,测试结果显示int和bigint(即i8)在查询性能...

    oracle char,varchar,varchar2的区别和使用方法

    ### Oracle CHAR, VARCHAR, VARCHAR2 的区别与使用方法 在 Oracle 数据库中,字符串类型是极为常见的数据类型之一,主要用于存储文本数据。其中最常用的三种类型包括:`CHAR`, `VARCHAR`, 和 `VARCHAR2`。这三种...

    char和varchar在mysql中的效率怎样.docx

    在MySQL数据库中,`CHAR`和`VARCHAR`是两种常见的字符串数据类型,它们在存储和处理数据时具有不同的效率特点。理解这两种类型的差异对于优化数据库性能至关重要。 `CHAR`是一种固定长度的数据类型,这意味着无论...

    char,varchar以及varchar2的区别

    今天我们将深入探讨三种常见的字符串类型:`char`、`varchar`和`varchar2`,它们在不同的数据库系统中有着微妙的区别。 1. **char类型** `char`是一种固定长度的字符串类型,无论实际存储的数据是否填满指定长度,...

    MYSQL中 char 和 varchar的区别

    在MySQL数据库中,CHAR和VARCHAR是两种常用的字符串数据类型,它们在存储和处理字符串时有显著的区别。理解这些差异对于优化数据库性能和节省存储空间至关重要。 首先,CHAR和VARCHAR都是预定义长度的数据类型,但...

    解决繁体-批量转化varchar为nvarchar

    因最近自己制作的软件需运行在简繁系统中,但数据库设计时...此脚本可批量处理数据库内所有char和varchar转换为nchar和nvarchar,已集成重建主键,约束,索引,此脚本没有启用事务,运行前请备份原数据库或手动增加事务

    oracle中varchar2(byte)和varchar2(char).doc

    ### Oracle中的VARCHAR2(BYTE)与VARCHAR2(CHAR)区别详解 #### 一、引言 在Oracle数据库中,`VARCHAR2`是最常用的字符数据类型之一,用于存储变长的字符串。然而,在定义`VARCHAR2`类型时,可以选择指定长度为`BYTE`...

    MySQL数据库char与varchar的区别分析及使用建议

    在字符型数据中,用的最多的就是 Char与Varchar两种类型。前面的是固定长度,而后面的是可变长度。现在我们需要考虑的是,在什么情况下使用Char字符型数据,什么情况下采用 Varchar字符型数据。 一、VARCHAR与CHAR...

Global site tag (gtag.js) - Google Analytics