- 浏览: 214943 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
sun.zhang:
这个文章不错,怎么没人顶?
servlet 输出中文显示为问号"??"的解决办法 -
freeskywcy:
happy90 写道Keep-Alive 模式只要设置一下就行 ...
有关http Keep-Alive 的详细解释 -
happy90:
Keep-Alive 模式只要设置一下就行吗? 那编程的时候要 ...
有关http Keep-Alive 的详细解释
char varchar varchar2 的区别
- 博客分类:
- oracle数据库
char varchar varchar2 的区别
区别:
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会更好一些。
char varchar nchar nvarchar 四者的区别
1、char[(n)]
长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。
2、varchar[(n)]
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。
将为使用 char 或 varchar 的对象被指派数据库的默认排序规则,除非用 COLLATE 子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。
支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题。如果使用 char 或 varchar:
如果希望列中的数据值大小接近一致,请使用 char。
如果希望列中的数据值大小显著不同,请使用 varchar。
如果执行 CREATE TABLE 或 ALTER TABLE 时 SET ANSI_PADDING 为 OFF,则一个定义为 NULL 的 char 列将被作为 varchar 处理。
当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节。根据字符串的不同,n 个字节的存储大小可能小于 n 个字符。
nchar 是固定长度 Unicode 数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用 UNICODE UCS-2 字符集。
3、nchar(n)
包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。nchar 在 SQL-92 中的同义词为 national char 和 national character。
3、nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。
如果希望列中所有数据项的大小接近一致,则使用 nchar。
如果希望列中数据项的大小差异很大,则使用 nvarchar。
使用 nchar 或 nvarchar 的对象被赋予数据库的默认排序规则,除非使用 COLLATE 子句赋予特定的排序规则。
SET ANSI_PADDING OFF 不适用于 nchar 或 nvarchar。SET ANSI_PADDING ON 永远适用于 nchar 和 nvarchar。
===========================================================================
nchar(n)
包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。nchar 在 SQL-92 中的同义词为 national char 和 national character。
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。
注释
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。
如果希望列中所有数据项的大小接近一致,则使用 nchar。
如果希望列中数据项的大小差异很大,则使用 nvarchar。
使用 nchar 或 nvarchar 的对象被赋予数据库的默认排序规则,除非使用 COLLATE 子句赋予特定的排序规则。
SET ANSI_PADDING OFF 不适用于 nchar 或 nvarchar。SET ANSI_PADDING ON 永远适用于 nchar 和 nvarchar。
二、char 和 varchar
固定长度 (char) 或可变长度 (varchar) 字符数据类型。
char[(n)]
长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。
varchar[(n)]
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。
注释
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。
将为使用 char 或 varchar 的对象被指派数据库的默认排序规则,除非用 COLLATE 子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。
支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题。如果使用 char 或 varchar:
如果希望列中的数据值大小接近一致,请使用 char。
如果希望列中的数据值大小显著不同,请使用 varchar。
如果执行 CREATE TABLE 或 ALTER TABLE 时 SET ANSI_PADDING 为 OFF,则一个定义为 NULL 的 char 列将被作为 varchar 处理。
当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节。根据字符串的不同,n 个字节的存储大小可能小于 n 个字符。
总结:
1、 varchar:
可变长度的非 Unicode 数据,最长为 8,000 个字符。
2、nvarchar:
可变长度 Unicode 数据,其最大长度为 4,000 字符。
3、char:
固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
4、nchar
固定长度的 Unicode 数据,最大长度为 4,000 个字符。
5、 char和varchar都是字符串类型的
用Unicode编码的字符串,结果是字符的整数值
发表评论
-
Oracle的EM(OracleDBConsoleorcl服务)无法启动的问题解决
2012-03-14 09:26 2829Oracle的EM(OracleDBConsoleorcl ... -
解决OracleDBConsoleorcl服务无法启动问题
2012-03-07 14:25 0Windows 不能在 本地计算机 启动 OracleDBCo ... -
oracle中的exists和not exists和in用法详解
2012-02-22 15:55 891有两个简单例子,以说明 “exists”和“in”的效率 ... -
Oracle分页,Oracle中rownum与rowid的理解
2012-02-16 15:02 1460一、 Oracle中 rownum与rowid的理解 ... -
ORACLE中字符串比较
2012-02-15 10:34 1858在oracle中,将空字符串 ... -
oracle 重复数据的分情况删除
2012-02-14 10:21 850Oracle认证:数据库重 ... -
ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
2011-12-23 12:26 1013早上同事用PL/SQL连接 ... -
详解查看Oracle用户权限的七种方法
2011-12-23 11:32 762查看Oracle用户权限一般要通过一些实际 ... -
Oracle中TO_DATE格式
2011-12-09 08:57 676TO_DATE格式(以时间:2007-1 ... -
Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别
2011-12-07 16:14 976转自:http://blog.csdn.net/wh62 ... -
一个修改Oracle用户密码的小诀窍
2011-12-03 16:34 1656有时候我们可能不知道一个用户的密码,但是又需要以这个用户做一 ... -
(oracle)只有 DBA 才能导入由其他 DBA 导出的文件
2011-11-29 14:29 1565连接到: Oracle Database 10g Enterp ... -
oracle定时任务(dbms_job)
2011-11-15 08:57 756原文地址:http://publish.it168.com/2 ... -
oracle中的tnsname.ora 参数解释
2011-10-20 09:36 1631可以在客户端机器上使 ... -
不安装Oracle客户端远程连接Orcale数据库
2011-10-20 09:36 1831第一种方法: 最近有 ... -
PLSQL 连接远程的ORACLE数据库解决方案
2011-10-20 09:36 1113PLSQL Developer连接远程的ORACLE数 ... -
oracle 常用函数nvl decode userenv greatest least
2011-10-10 15:04 1407如下3个函数,分别用新内容代替字段的空值://比如说用其他 ... -
to_char 和to_date的说明
2011-10-10 15:05 855to_char DATE 类型转换为 VARCHAR2 t ... -
To_Date函数用法
2011-10-09 15:11 1372To_Date函数用法 spl>select ... -
Oracle中dual的意思
2011-10-09 14:47 1364这是个虚拟表,在操作 ...
相关推荐
浅析Oracle中char和varchar2的区别 电脑资料.docx
oracle char,varchar,varchar2的区别和使用方法 非本人总结,但是说的挺好的! 欢迎下载
oracle中varchar2(byte)和varchar2(char) 细节决定成败,大家在设计数据库建表的时候一定要注意。
NULL 博文链接:https://wy649898543.iteye.com/blog/1446712
char和varchar在mysql中的效率怎样.docx
在本篇文章中我们给大家分享了关于MySQL中int、char以及varchar的性能对比的相关内容,有兴趣的朋友们学习下。
nchar_char_varchar与nvarchar有何区别?
CHAR和VARCHAR类型相似,差别主要在存储,尾随空格和检索方式上。 CHAR和VARCHAR相同的是:CHAR和VARCHAR都指定了字符长度,注意是字符长度。例如char(30) 和 varchar(30)表示都可以存30个字符。有一点要注意的是在...
char是定长的 char(10) varchar2(10) 同样存 a ,char占用了10个字符,varchar2 只占用了 一个字符(一个中文占两个字符,英文占一个)。 但是char的查询速度要比varchar2快。varchar2,Oracle还要进行语法分析,这...
char是固定长度的,而varchar会根据具体的长度来使用存储空间,另外varchar需要用额外的1-2个字节存储字符串长度。 1). 当字符串长度小于255时,用额外的1个字节来记录长度 2). 当字符串长度大于255时,用额外的2个...
char、varchar、nchar、nvarchar四种类型的区别char、varchar、nchar、nvarchar四种类型的区别
在字符型数据中,用的最多的就是 Char与Varchar两种类型。前面的是固定长度,而后面的是可变长度。现在我们需要考虑的是,在什么情况下使用Char字符型数据,什么情况下采用 Varchar字符型数据。 一、VARCHAR与CHAR...
SQLServer中char、varchar、nchar、nvarchar的区别 SQLServer中char、varchar、nchar、nvarchar的区别.txt
char与varchar的区别 char (13)长度固定, 如’www.jb51.net’ 存储需要空间 12个字符 varchar(13) 可变长 如’www.jb51.net’ 需要存储空间 13字符, 从上面可以看得出来char 长度是固定的,不管你存储的数据是多少...
2.char的存取速度比varchar要快,应为长度固定,方便程序的存储和查找; 3.char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也...
在MySQL中,char、varchar和text类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度,但text不可以。 它们的存储方式和数据的检索方式也都不一样。 数据的检索效率是:char > varchar ...
char是一种固定长度的类型,varchar则是一种可变长度的类型,那么他们具体使用过程中有什么区别吗
你真的知道CHAR和VARCHAR类型在存储和读取时的区别吗? 还是先抛几条结论吧: 1、存储的时候,CHAR总是会补足空格后再存储,不管用户插入数据时尾部有没有包含空格。 2、存储的时候,VARCHAR不会先补足空格后再存储...
Sqlserver中char,nchar,varchar与Nvarchar的区别分析,使用sqlserver的朋友可以参考下。