问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

char varchar varchar2 的区别

发布网友 发布时间:2022-04-21 19:47

我来回答

5个回答

懂视网 时间:2022-04-30 09:43

1.char

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

 

2.varchar/varchar2

varchar是长度不固定的,比如说,你定义了varchar(20),当你插入abc,则在数据库中只占3个字节。
varchar同样区分中英文,这点同char。


varchar2基本上等同于varchar,它是oracle自己定义的一个非工业标准varchar,不同在于,varchar2用null代替varchar的空字符串
varchar/varchar2适用于长度不固定的,一般不含中文的情况

 

3.nvarchar/nvarchar2

nvarchar和nvarchar2是长度不固定的
nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数
nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占两个字节
nvarchar/nvarchar2适用于存放中文

 

4.char [ ( n ) ]
    固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。

varchar [ ( n | max ) ]
    可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节,用于反映存储的数据的长度。所输入数据的长度可以为 0 个字符。
    * 如果列数据项的大小一致,则使用 char。
    * 如果列数据项的大小差异相当大,则使用 varchar。
    * 如果列数据项大小相差很大,而且大小可能超过 8,000 字节,请使用 varchar(max)。

  如果未在数据定义或变量声明语句中char 或 varchar 数据类型指定 n,则默认长度为 1。如果在使用 CAST 和 CONVERT 函数时char 或 varchar 数据类型未指定 n,则默认长度为 30。
当执行 CREATE TABLE 或 ALTER TABLE 时,如果 SET ANSI_PADDING 为 OFF,则定义为 NULL 的 char 列将作为 varchar 处理。

 

5.数据检索
     无论是否通过索引,varchar类型的数据检索略优于char的扫描。

选择char还是选择varchar的建议
    1.适宜于char的情况:
     a. 列中的各行数据长度基本一致,长度变化不超过50字节;
     b. 数据变更频繁,数据检索的需求较少。
     c. 列的长度不会变化,修改char类型列的宽度的代价比较大。
     d. 列中不会出现大量的NULL值。
     e. 列上不需要建立过多的索引,过多的索引对char列的数据变更影响较大。

    2.适宜于varchar的情况;
     a. 列中的各行数据的长度差异比较大。
     b. 列中数据的更新非常少,但查询非常频繁。
     c. 列中经常没有数据,为NULL值或为空值
nchar [ ( n ) ]
    n 个字符的固定长度的 Unicode 字符数据。n 值必须在 1 到 4,000 之间(含)。存储大小为两倍 n 字节。
nvarchar [ ( n | max ) ]
    可变长度 Unicode 字符数据。n 值在 1 到 4,000 之间(含)。max 指示最大存储大小为 2^31-1 字节。存储大小是所输入字符个数的两倍 + 2 个字节。所输入数据的长度可以为 0 个字符。

注释:
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。
如果列数据项的大小可能相同,请使用 nchar。
如果列数据项的大小可能差异很大,请使用 nvarchar。
sysname 是系统提供的用户定义数据类型,除了不可为空值外,在功能上与 nvarchar(128) 相同。sysname 用于引用数据库对象名。
为使用 nchar 或 nvarchar 的对象分配的是默认的数据库排序规则,但可使用 COLLATE 子句分配特定的排序规则。
SET ANSI_PADDING ON 永远适用于 nchar 和 nvarchar。SET ANSI_PADDING OFF 不适用于 nchar 或 nvarchar 数据类型。

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

标签:

热心网友 时间:2022-04-30 06:51

1、处理速度

char 和相同长度的varchar处理速度差不多。varchar的长度不会影响处理速度;

2、string

O/R Mapping中对应实体的属性类型一般是以string居多,用char[]的非常少,所以如果按mapping的合理性来说,可变长度的类型更加吻合;varchar的存放和string是一样原理的,即length {block}这种方式,所以varchar的长度和它实际占用空间是无关的;

3、查询成本

char和varchar的比较成本是一样的,现在关键就看它们的索引查找的成本了,因为查找策略都一样,因此应该比较谁占用空间小。

例:

在存放相同数量的字符情况下,如果数量小,那么char占用长度是小于varchar的,但如果数量稍大,则varchar完全可能小于char,而且要看实际填充数值的充实度,比如说varchar(3)和char(3),那么理论上应该是char快了,但如果是char(10)和varchar(10),充实度只有30%的情况下,理论上就应该是varchar快了。

因为varchar需要额外空间存放块长度,所以只要length(1-fillfactor)大于这个存放空间(好像是2字节),那么它就会比相同长度的char快了。

扩展资料:

1、如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char;

2、能确定长度又不一定是ansi字符或者,那么用nchar;

3、不确定长度,要查询且希望利用索引的话,用nvarchar类型吧,将它们设到400;

4、不查询的话没什么好说的,用nvarchar(4000);

5、性格豪爽的可以只用3和4,偶尔用用1,毕竟这是一种额外说明,等于告诉别人说,我一定需要长度为X位的数据。

热心网友 时间:2022-04-30 08:09

1、长度上的区别

CHAR的长度是固定的,VARCHAR2的长度是可以变化的。

例如,存储字符串“abc",对于CHAR (20),表示存储的字符占20个字节,而同样的VARCHAR2 (20)就只占3个字节的长度,20只是最大值,而且当存储的字符小于20时,按实际的长度来存储。 

2、意义上的区别

VARCHAR是VARCHAR2的同义词,工业标准的VARCHAR类型可以用来存储空字符串,但是Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它在数据库中varchar列可以存储空字符串的特性改为存储NULL值。

3、空间大小上的区别

VARCHAR2比CHAR要节省空间,VARCHAR2在效率上也比CHAR差一些,所以如果想获得效率,就必须牺牲一定的空间,这就是在数据库设计上常说的‘以空间换效率’。 

VARCHAR2虽然比CHAR节省空间,但如果一个VARCHAR2列经常被修改,且每次被修改数据的长度不同会引起‘行迁移’现象。

热心网友 时间:2022-04-30 09:43

区别:
1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。
2.CHAR的效率比VARCHAR2的效率稍高。
3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。
何时该用CHAR,何时该用varchar2?
CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.
VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。

热心网友 时间:2022-04-30 11:35

char:
使用指定长度的固定长度表示的字符串;比如char(8),则数据库会使用固定的8个字节来存储数据

,不足8为的字符串在其后补空字符;
varchar
在oracle中varchar跟char是一个类型;sqlserver中varchar相当于oracle中的varchar2
varchar2
用实际字符数+2个字节来存储的变长字符串;比如一个字段定义为varchar(10),而实际存储的内容为

‘A’,则数据库会用3个字节来存储该字符串,其中前两个字节用来存储字符的长度;
在数据库中的字段,由于一个字段大小不能超过一个block的长度,所以varchar和char都是最大为

8000个字节,由于可能会存储汉字,也就是一个字符用2个字节来存储,所以字段中最大定义为varchar

(4000),而在plsql中,这个大小的*变为32000左右,这是因为表示其大小的字节只有两个。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 Adobe Reader文档中的水印签名怎么去处? qq开启了设备锁手机丢了电脑也上不了该怎么解除设备 投稿中的初审已审回是什么意思??? 在oracle中varchar和varchar2有什么区别? 求网络高手!电脑桌面上显示的水印怎么取消? 中国图书馆学报“复审已审回”是退稿的意思吗? 手机丢失如何关闭qq设备锁 VARCHAR2与VARCHAR的区别 怎么去除水印标签 手机掉了怎样解除QQ设备锁密保也忘了 请问审计与经济研究的“初审已审回'是什么意思 mysql nvarchar和varchar的区别 《南京审计学院学报》投稿“终审已审回”是什么意思? varchar2 和nvarchar2的选择 手机丢失如何在电脑上取消QQ设备锁 怎样将桌面上的水印去掉? 投稿状态:十天状态就变为了评审已审回,意味着什么? 手机丢了怎样取消qq设备锁 char varchar varchar2 nchar nvarchar nvarchar2... 我QQ开了设备锁 但手机丢了 怎么才能解除设备锁 包装工程杂质评审申回是什么意思 什么杀毒软件杀水印标签病毒 绑定的手机号丢了,QQ登不上,如何关闭设备锁 oracle数据类型varchar2和varchar的区别 我想请教怎么把照片上的标签或是水印去掉 投稿中的初审已审回是什么意思? oracle中varchar和nvarchar有什么区别? 电脑桌面右下角有激活Windows水印,系统更新后已经... 手机丢了,QQ设备锁绑定了,怎么解 手机被盗了,qq怎么解除设备锁 安卓手机坏了怎么解除qq的设备锁 主动加男生微信的理由 主动加喜欢的男生微信吗 如何在苹果电脑上安装win7 怎样把QQ``我的收藏``里的文件打印出来? 我把用手机拍的身份证复印件放在qq我的收藏里在老... 手机qq收藏表情的文件夹在哪,可以从其他文件夹复... 怎么把QQ空间里的图片一次性全复制下来 qq相册里的照片怎么复制到电脑 整支鹿茸能造假吗?怎么辨别真假梅花鹿鹿茸?