char、nvarchar和varchar区别

这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个字节全部释放
时间: 2024-10-10 00:28:40

char、nvarchar和varchar区别的相关文章

英文操作系统中中文乱码(SQL中 NVARCHAR 和 VARCHAR区别)

  varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段 的类型为nvarchar,则会占用两个字节. 正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操 作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar

Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用(转载)

一 varchar,varchar2,nvarchar,nvarchar2 四个类型都属于变长字符类型, varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节,都是非 Unicode 字符数据,可以定义的最大长度为4000字节. nvarchar和nvarchar2的区别和上面一样,   与上面区别在于是根据Unicode   标准所进行的定义的类型(长度定义的是字符数,而不是字节数),通常用于支持多国语言类似系统的定义,可以定义的最大长度为400

答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;

http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html 1. char.varchar.nvarchar之间的区别(包括用途和空间占用):xml类型查找某个节点的数据有哪些方法,哪个效率高:使用存储 过程和使用T-SQL查询数据有啥不一样: ------------------------------------------------ SQL中char.varchar.nchar.nvarchar的区别 http://www.cn

SQL中varchar和nvarchar有什么区别?

varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节. nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍. 两字段分别有字段值:我和coffee那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间.

char nvarchar varchar

1. char 固定长度,最长n个字符. 2. varchar 最大长度为n的可变字符串. (n为某一整数,不同数据库,最大长度n不同) char和varchar区别: varchar必char节省空间,但在效率上比char稍微差一些. 说varchar比char节省空间,是因为varchar是可变字符串,比如:用varchar(5)存储字符串“abc”,只占用3个字节的存储空间,而用char(5)存储,则占用5个字节(“abc  ”). 说varchar比char效率稍差,是因为,当修改var

oracle中varchar,varchar2,nvarchar,nvarchar2的区别

--varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个字节 2.size 的最大值是 4000,而最小值是 1,其值表示字节数,比如 varchar(20)表示最大可以存放20个字节的内容 区别: 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节: 2.VARCHAR2

sql server中nvarchar和varchar的区别

首先,我们来看下nvarchar和varchar的官方帮助里的说明:varchar(n)长 度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长 度,而不是 n 个字节.所输入的数据字符长度可以为零.varchar 在 SQL-92 中的同义词 为 char varying 或 character varying. nvarchar(n) 包含 n 个字符的可 变长度 Unicode 字符数据.n 的值必

mysql数据类型——字符串char(m)和varchar(m)

char(m) 定长字符串类型  非 Unicode 字符 varchar(m) 变长字符串类型  非 Unicode 数据 说明:M为最大可存储字节数 汉子占两个字节,通过指定m,来限制存储的最大字符数长度,char(20)和varchar(20)将最多只能存储20个字符,超过的字符将会被截掉.m必须小于该类型允许的最大字符数. 一 char(m)类型 Char(m)   最大字节数255    定长类型 m可取0-255 它的右边填充空格以达到指定长度,当检索到char值时,尾部的空格被删除

const char*、char*、char* const、char[]、string的区别

1.const char* p: p is a pointer to const char(char const* p 一样)   意思就是不能通过p指针来修改p指向的内容(但是内容可以修改).2.char* p      : p is a pointer to char   意思就是可通过p指针来修改p指向的内容3.char* const p: p is a const pointer to char   意思就是p指针是一个常指针,他指向的内存地址不能变,定义的时候就得初始化   一旦给指针