`

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


1.
varchar[(n)]  
     长度为      n      个字节的可变长度且非      Unicode      的字符数据。n      必须是一个介于      1      和      8,000      之间的数值。存储大小为输入数据的字节的实际长度,而不是      n      个字节。所输入的数据字符长度可以为零。varchar      在      SQL-92      中的同义词为      char      varying      或      character      varying。  
   
     nvarchar(n)  
     包含      n      个字符的可变长度      Unicode      字符数据。n      的值必须介于      1      与      4,000      之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar      在      SQL-92      中的同义词为      national      char      varying      和      national      character      varying。  

n 表示字符个数

nvarchar:  
     不管是一个字符还是一个汉字,都存为2个字节  
     varchar:  
     汉字是2个字节,其他字符存为1个字节  




通俗一點就是varchar適合輸入英文和數字,nvarchar一般用做中文或其它語言的輸入,這樣到別的語系不會出現亂碼:))

2.
N表示Unicode常量,可以解决多语言字符集之间的转换问题,见联机帮助

姓名,和房间通常都是用varchar这个数据类型

解释一下:
drop proc a

varchar(n):变长型字符数据类型,存储最长长度为8,000 个字符。

举个例子:
create table a (name1 varchar(8)) 
insert a select '张红a' 
--- 存储长度为5个字节,余下的3个字节全部释放 
insert a select '王一南' 
----存储长度为6个字节,余下的2个字节全部释放 
---意思是varchar变长字符数据类型与存储数据的实际长度是一致的 


nvarchar(n):可变长度 Unicode 数据,其最大长度为 4,000 字符。
字节的存储大小是所输入字符个数的两倍,
就是说它是双字节来存储数据的。
如果存储数据如果存在单字节时,它也是以双字节来占用存储空间的。

举个例子:
create table aa (name1 nvarchar(8)) 
insert aa select '张红a' 
---存储长度为6个字节,余下的2个字节全部释放
分享到:
评论

相关推荐

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

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

    Oralce中VARCHAR2()与NVARCHAR2()的区别介绍

    在Oracle数据库中,VARCHAR2()和NVARCHAR2()都是用于存储字符数据的变量长度数据类型,但它们之间存在显著的差异。以下是对这两个数据类型的详细解释: 1. VARCHAR2() VARCHAR2() 是Oracle中的标准可变长度字符...

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

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

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

    - nvarchar是可变长度的Unicode字符数据类型,与VARCHAR类似,但每个字符占用2个字节。 - nvarchar最多可存储4,000个Unicode字符。 - 和varchar一样,nvarchar只占用实际字符所需的空间,但在存储数据长度方面...

    SQL Server中,varchar和nvarchar如何选择?

    在SQL Server中,选择使用`varchar`还是`nvarchar`数据类型是数据库设计中的一个重要决策,因为这直接影响到数据存储的效率、空间占用以及兼容性。理解这两种数据类型的差异至关重要。 `varchar`是一种变长字符串...

    SQL数据类型nchar_char_varchar与nvarchar区别

    nchar_char_varchar与nvarchar有何区别?

    sql中varchar和nvarchar的区别与使用方法

    问: sql server中的varchar和Nvarchar有什么区别啊,varchar好像是一个英文和一个汉字都站两个字节,而Nvarchar则是一个英文占一个字节,汉字占两个字节。可是这个对asp程序有什么影响? 答: varchar(n) 长度为 ...

    Mysql中varchar长度设置方法

    然而,实际上MySQL的`VARCHAR`类型在存储时会额外使用1到2个字节来记录字符串的长度,这意味着即使使用UTF-8编码,`VARCHAR(50)`仍能存储50个英文字符或16个中文字符。 在MySQL 5.1及以上版本中,`VARCHAR`的最大...

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

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

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

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

    SQL中varchar和nvarchar的基本介绍及其区别

    对于更大的文本数据,可以使用`text`或`ntext`,但现在通常推荐使用`varchar(max)`和`nvarchar(max)`,它们分别可以存储最多2^31-1个字节和2^31-1个字符。 5. **性能与存储**:在存储空间有限或对性能要求较高的...

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

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

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

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

    深入char、varchar、text和nchar、nvarchar、ntext的区别详解

    本文将深入探讨`CHAR`、`VARCHAR`、`TEXT`以及`NCHAR`、`NVARCHAR`、`NTEXT`的区别,帮助开发者做出更明智的选择。 1. **CHAR**: - `CHAR`是一种定长字符串类型,它会为每个字段预留指定的字节数,无论实际存储的...

    varChar和Char之间的区别?

    `nchar`和`nvarchar`的使用场景与`char`和`varchar`类似,但它们支持更大的字符集,包括各种语言和特殊符号,但这也意味着更高的存储需求。 在面试中,了解这些数据类型的特点和应用场景是十分重要的。合理选择数据...

    mysql如何处理varchar与nvarchar类型中的特殊字符

    在MySQL中,`VARCHAR`和`NVARCHAR`是两种常见的字符串数据类型,它们在处理特殊字符时有不同的表现和处理方式。理解这两种类型的区别对于数据库设计和数据存储至关重要,特别是当处理包含非ASCII字符(如中文、日文...

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

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

Global site tag (gtag.js) - Google Analytics