oracle的编码,Oracle编码格式

您所在的位置:网站首页 oracle字符集编码格式 oracle的编码,Oracle编码格式

oracle的编码,Oracle编码格式

2023-03-04 15:57| 来源: 网络整理| 查看: 265

oracle

的编码

,Oracle

编码格式

select value from NLS_DATABASE_PARAMETERS where parameter='NLS_CHARACTERSET';

NLS_CHARACTERSET(“字符集”)定义了“普通”的 CHAR, VARCHAR2, LONG 以及 CLOB 字段的编码。

NLS_NCHAR_CHARACTERSET(“国家字符集”)定义了 NCHAR, NVARCHAR2 以及 NCLOB 字段的编码。从 9i 以后都是 Unicode

编码。如果没有使⽤ NCHAR, NVARCHAR2 以及 NCLOB 字段,那么 NLS_NCHAR_CHARACTERSET 的设置不会被使⽤或者说不相

关。

注意:数据库的NLS_CHARACTERSET 为AL32UTF8,即⼀个汉字占⽤三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,

则⼀个字符占⽤两个字节。

⼀ varchar,varchar2,nvarchar,nvarchar2

四个类型都属于变长字符类型, varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全⾓等字符占两字节,都是

⾮ Unicode 字符数据,可以定义的最⼤长度为4000字节。 nvarchar和nvarchar2的区别和上⾯⼀样,   与上⾯区别在于是根据

Unicode   标准所进⾏的定义的类型(长度定义的是字符数,⽽不是字节数),通常⽤于⽀持多国语⾔类似系统的定义,可以定义的最⼤长度

为4000字符、8000字节。

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适⽤于存放中⽂

1.NULL值(空值)。

a. char列的NULL值占⽤存储空间。char类型可以定义空字符串

b. varcahr列的NULL值不占⽤存储空间。varchar类型定义的空字符串按照null进⾏处理

c. 插⼊同样数量的NULL值,varchar列的插⼊效率明显⾼出char列。

2.插⼊数据

⽆论插⼊数据涉及的列是否建⽴索引,char的效率都明显低于varchar。

3. 更新数据

如果更新的列上未建⽴索引,则char的效率低于varchar,差异不⼤;建⽴索引的话,效率较⾼。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3