Oracle 中varchar 、 varchar2 、nvarchar2 有什么区别?

如果oracle的字符编码采用GBK,那么一个汉字占两个字节,可如果使用的是UTF-8那么一个汉字占三个字节。大部分情况下使用varchar2类型,可以保证更好的兼容性。

GBK字符集下:varchar2(10)可以存5个中文,可以存10个英文。但是使用length函数获取长度实际上获取的是字符的个数,即:存5个中文的长度为5 , 10个英文的长度为10 。

nvarchar2(10)最多可一存10个中文,最多也只能存10个英文,字符长度也是字符个数,即无论是中文还是英文都是10 。

varchar2的长度最多可以设置为4000,nvarchar2的长度最多可以设置为2000,也就是说,同样都保存中文的话,两个类型最大都可以存2000个中文,如果同样都存英文的话varchar可以存4000个英文,nvarchar2只可以存2000个英文。

oracle中建表时自动把varchar转换为varchar2类型,进行创建。

varchar也是存在不定长的,和varchar2是同义词,区别在于varchar2是oracle自己开发的一个类型,用户将空字符串当成NULL存储,具有更好的兼容性。

时间: 2024-10-08 06:18:06

Oracle 中varchar 、 varchar2 、nvarchar2 有什么区别?的相关文章

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

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

Oracle中Null与空字符串' '的区别

含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除了以下两种情况: 1.主键字段(primary key), 2.定义时已经加了NOT NULL限制条件的字段 说明: 1.等价于没有任何值.是未知数. 2.NULL与0.空字符串.空格都不同. 3.对空值做加.减.乘.除等运算操作,结果仍为空. 4.NULL的处理使用NVL函数. 5.比较时使用关键

oracle中Blob和Clob类型的区别

一.oracle中Blob和Clob类型的区别BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的的,或者可以直接用LOB字段代替这两个.但是为了更好的管理ORACLE数据库,通常像图片.文件.音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去.而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便. BLOB全称为二进制大型对象(Binary Large Object).它用于存储数据

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个字节的存储空间.

Oracle中Union与Union All的区别(适用多个数据库)

Oracle中Union与Union All的区别(适用多个数据库) 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并在一起显示出来 Union 与 Union ALL 的作用都是合并 SELECT 的查询结果集,那么它们有什么不同呢? Union 将查询到的结果集合并后进行重查,将其中相同的行去除.缺点:效率低: 而Union ALL 则只是合并查询的结果集,并不重新查询,效率高,

oracle中varchar、varchar2、char和nvarchar的区别

1.char char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节: char是区分中英文的,中文在char中占两个字节,而英文占一个,所以char(20)你只能存20个字母或10个汉字. char适用于长度比较固定的,一般不含中文的情况 2.varchar/varchar2 varchar是长度不固定的,比如说,你定义了varchar(20),当你插入abc,则在数据库中只占3个字节. varc

oracle中int类型和number类型区别

INT类型是NUMBER类型的子类型.下面简要说明:(1)NUMBER(P,S)该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节个数),而S则表示小数点后面的位数.假设定义SAL列为NUMBER(6,2)则整数最大位数为4位(6-2=4),而小数最大位数为2位.(2)INT类型当定义整数类型时,可以直接使用NUMBER的子类型INT,顾名思义:INT用于整型数据. oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集.int类型只能

CHAR varchar varchar2 nvarchar2

CHAR的长度是固定的,而VARCHAR2的长度是可以变化的 比如,存储字符串"abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储. CHAR的效率比VARCHAR2的效率稍高. 目前VARCHAR是VARCHAR2的同义词.工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利.Oracle自