Oracle数据类型及存储方式——字符类型篇
注:这篇文章绝大部分都摘抄于袁光东先生的 <<oracle小组学习笔记>>.
下面会对各种字符类型作详细解释。
一. char 类型
oracle 可以定义1个char(n)类型的列,长度为n, 如果插入数据长度小于n, 会自动用空格补齐。 n<=2000
1.新建1个表test_char,只含1个列,类型是char(10). 列名是colA.
2.向这张表插入一d数据。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img5.ph.126.net/GiYrRMpM-pBC85u_5uH7MQ==/6597975764237354735.jpg)
注:最多只能插入10个字符 否则报错。(废话拉)
3.使用dump函数可以查看每1条数据的内部存储结构。
注:dump 函数能查看数据在datafile存储内容。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](data:image/png;base64,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)
解释一下:
Typ=96 表示数据类型的ID。 其中char类型的id是96。
Len=10 表示所在的内部存储的长度(用字节表示). 虽然第一行数据知存了1个字符'a',但是它还是占了10个字节的空间。
97,32,32,32,32,32,32,32,32,32 表示内部存储方式。 其实oracle的内部存储方式是以ASCII码来存储的。
点解咁讲? 因为97就是a的ASCII码、。
可以用chr 函数把ASCII码转成字符:
反之,如果想知道1个字符的ASCII码,可以用函数ascii:
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](data:image/png;base64,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k/mrDmFmYtL5Ygz6lZta1PVQCkUGL935+Plp6WjU9RjC0kZVIhBTBPSPjGLqcmoyIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIpDFBPIY++7/neEeMVbLs5iqzIuACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIhAKIHb/2YvtCIHlRQsWBDJKVQM0bZJSUlZu3Yt74LGf+cfHDpzSU1NRRAkB01NropAdhPo16/fyJEjy5Qpg/pouXLlxo4d+/TTT4c6MXr06DZt2oSWq0QEROAOgQULFrAuOb+jTvDee+8FAUJlZ8aMGfHx8QInAllH4LZcWtYNkA2W/7n1cQ9Uvnx5969EERJVCBegWpAN/miIXEsgFsIJgYw+ffqUKlXKJHvkfo68r7murVq1Qqd07969ufYya+LZQ+COcnv2jJcVoyxZsgTpeLZMaCKeOXNmw4YNbm3pokWLotCBVlVWDC2bIhDjBDp06PD66687k+zdu3ePHj1ifM6anghEiwDqvRzokemR77EQzZ07l1M+Yxy5tHnz5hUpUiRaY8mOCFgIxMLfnfiLU7du3YgllEXR7V21ahX6iGbO77zzDmKKpH8WBKoSAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQgSwkEHgLLK8jbteuXZMmTUqUKHHz5s39+/evW7eO16lShb4YVQkJCefOnVuzZo2j6te5c+csdEqmRSBnEggoaAwZMuTGjRvTp0/nXcSFChVKTEzs1KkT4USAtWzZcubMmSdOnEAxafDgwZcvX966dWvOnKm8FoFsIbB06VLPl+JPmDChevXqjgs1a9YcP348v4Zqzpo2U6dO7dixI0tZtnitQUTgriMQkEs7cODAwIEDq1atmj9/freDFSpUOHr0qFNy5MgRSiwzQN6vdOnSkydPRkypefPmniFq6a4qEcjpBALJHmle+/btkTQvW7Ys+d6WLVvYJpH+kfhdu3bNmSHfKbFMmPyQD0q1rGkNGzZETf3gwYPTpk2zdFGVCMQSgUA4ESeIuPCJi4tDKInQYjdF5nb16lXih59mwkHRZaHgiNXmyRMLgjeWmapKBNwE/k/Mk2O948ePJycnz5kzh0acQFSuXNkc8fFrlSpVkMq04GNRSkpKql+//smTJzdv3rx48eLU1FRLe1WJQIwRCIQTWx1OwNkmXbhwoVixYhwnkKRRjsoYGeDs2bMJD1atnj17btq0yTJ/NDOJolGjRp0/f97STFUiEKsEAslYjRo12rZty/k4f4Aionbv3s3Z3ZUrV6hq3bo1f3cqWbIkaRvL1MSJE9PS0jxP9vSXqFi9RTSvKBNgTzV06NCFCxc6mrNRHkDmRCAmCMSHMwuOFnbu3IlsM3/GPX36dDhd1EYEREAEREAEREAEREAEREAEYonAfwHWDBDtbpQJEQAAAABJRU5ErkJggg==)
而32是空格的ASCII码。
所以由97,32,32,32,32,32,32,32,32,32 得知char类型是定长类型,它总会
用空格来填充以达到1个固定宽度。
所以用char类型来保存字符数据是比较浪费空间的,如果字符数据很长的话。
oracle 的数据类型长度单位是字节:
可见1个汉子在oracle 是占用了两个字节的。
英文字母或符号只占用1个字节。
Char(10)最多可以存放5个汉字。
二. varchar2 类型
varchar2 是oracle 特有数据类型, 可以看成是sybase的varchar类型。
varchar2是按实际长度保存数据的。最多可以占用4000个字节。
1. 创建1个表,只有1列, 类型为varchar2, 长度为10。列名为colB.
2.插入一些数据
3. 用dump函数查看每一行的内部存储结构。
Typ=1 说明varchar2类型在oracle中的类型编号为1
Len 代表了每一行数据所占用的字节数,可以睇到没一行的len都唔同。
后面是 ASCII码
由此可见,varchar2 是存多少就占用多少空间。比较节省硬盘空间,不会用空格来填充。
三. byte 和 char
从10g开始, 在字符类型的宽度定义时,可以指定单位。
Byte 就是字节
char 就是字符。
Varchar2(10 byte) 长度是10个字节。
varchar2(10 char) 长度是10个字符所占的长度。
char(10 byte)长度是10个字节。
char(10 char)长度是10个字符所占的长度
注: varchar2(10) 默认为 varchar2(10 byte)
而1个字符占用多少个字节。 是由当前系统所采用的字符集来决定的。
如1个汉子占用两个字符。
查看当前系统所采用的字符集
如果在定义类型是,不指定单位,默认是按byte. 即系以字节为单位的。
采用char为单位的好处是,可以使用多字节的字符集。
比如, 在ZHS16GBK 字符集中, 1个汉字占两个字符。
那么如果把table的某个column的长度定义为可存放10个汉字, 通过下面定义就可以了
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img3.ph.126.net/n-pQ-grA56S3Gkqxt2oD9A==/6597708582911839513.jpg)
而,当我们向col_byte 插入6个汉字时,就会报错,因为6个汉字已经超出10个字节了。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img2.ph.126.net/S50Um6sTiN1NM6fslcOgXw==/6597499675702767172.jpg)
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img6.ph.126.net/gWVzm4nEIN4KHuJI8fp5NQ==/6597136836866789876.jpg)
下面会对各种字符类型作详细解释。
一. char 类型
oracle 可以定义1个char(n)类型的列,长度为n, 如果插入数据长度小于n, 会自动用空格补齐。 n<=2000
1.新建1个表test_char,只含1个列,类型是char(10). 列名是colA.
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img6.ph.126.net/3FjeB7Hxqls6Sgi6Lzwz7Q==/6597145632959771516.jpg)
2.向这张表插入一d数据。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img5.ph.126.net/GiYrRMpM-pBC85u_5uH7MQ==/6597975764237354735.jpg)
注:最多只能插入10个字符 否则报错。(废话拉)
3.使用dump函数可以查看每1条数据的内部存储结构。
注:dump 函数能查看数据在datafile存储内容。
解释一下:
Typ=96 表示数据类型的ID。 其中char类型的id是96。
Len=10 表示所在的内部存储的长度(用字节表示). 虽然第一行数据知存了1个字符'a',但是它还是占了10个字节的空间。
97,32,32,32,32,32,32,32,32,32 表示内部存储方式。 其实oracle的内部存储方式是以ASCII码来存储的。
点解咁讲? 因为97就是a的ASCII码、。
可以用chr 函数把ASCII码转成字符:
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img5.ph.126.net/LFYMXe2niXL9IcJg2S1qrA==/1545016147182611155.jpg)
反之,如果想知道1个字符的ASCII码,可以用函数ascii:
而32是空格的ASCII码。
所以由97,32,32,32,32,32,32,32,32,32 得知char类型是定长类型,它总会
用空格来填充以达到1个固定宽度。
所以用char类型来保存字符数据是比较浪费空间的,如果字符数据很长的话。
oracle 的数据类型长度单位是字节:
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img1.ph.126.net/f6G8db94vqq591Hg12dESw==/2504282867812530341.jpg)
可见1个汉子在oracle 是占用了两个字节的。
英文字母或符号只占用1个字节。
Char(10)最多可以存放5个汉字。
二. varchar2 类型
varchar2 是oracle 特有数据类型, 可以看成是sybase的varchar类型。
varchar2是按实际长度保存数据的。最多可以占用4000个字节。
1. 创建1个表,只有1列, 类型为varchar2, 长度为10。列名为colB.
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img4.ph.126.net/YwmXrh7GW4ntbsz-_LtnWw==/6597211603657459824.jpg)
2.插入一些数据
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img9.ph.126.net/anPki4f4Mid5JrtvN9lsOg==/3075395595558445969.jpg)
3. 用dump函数查看每一行的内部存储结构。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img3.ph.126.net/30d1chU1MAzyOny5LdcdbQ==/1358961187576865143.jpg)
Typ=1 说明varchar2类型在oracle中的类型编号为1
Len 代表了每一行数据所占用的字节数,可以睇到没一行的len都唔同。
后面是 ASCII码
由此可见,varchar2 是存多少就占用多少空间。比较节省硬盘空间,不会用空格来填充。
三. byte 和 char
从10g开始, 在字符类型的宽度定义时,可以指定单位。
Byte 就是字节
char 就是字符。
Varchar2(10 byte) 长度是10个字节。
varchar2(10 char) 长度是10个字符所占的长度。
char(10 byte)长度是10个字节。
char(10 char)长度是10个字符所占的长度
注: varchar2(10) 默认为 varchar2(10 byte)
而1个字符占用多少个字节。 是由当前系统所采用的字符集来决定的。
如1个汉子占用两个字符。
查看当前系统所采用的字符集
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img7.ph.126.net/OJ-X2ei8lH6cJeLY0_yxFQ==/6597723976074629377.jpg)
如果在定义类型是,不指定单位,默认是按byte. 即系以字节为单位的。
采用char为单位的好处是,可以使用多字节的字符集。
比如, 在ZHS16GBK 字符集中, 1个汉字占两个字符。
那么如果把table的某个column的长度定义为可存放10个汉字, 通过下面定义就可以了
Create table table_name(col_name varchar2(10 char))
继续实验, 新建1张表, 包含两列。1列采用byte为单位, 1列采用char为单位。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img2.ph.126.net/tgjgXBHws7Xqi13UXkmU7Q==/6597167623192365882.jpg)
如上
col_char 列,定义为可以存放10个字符。
col_byte列, 定义为可以存放10个字节的字符。
当前的系统采用字符集为ZHS16GBK,所以1个汉字字符占两个字节。
试着在表中插入一些数据。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img3.ph.126.net/n-pQ-grA56S3Gkqxt2oD9A==/6597708582911839513.jpg)
如上, col_char 可以插入10个汉字(每个两个字节), 而col_byte 可以插入10个字节(每个字母占1个字节)。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img6.ph.126.net/BXp6i9SS47j7VKPvFMvm2g==/6597985659842040326.jpg)
再看看col_char中每一行的存储结构
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img0.ph.126.net/CxdbyoYd2jY_x9eqyKI-qg==/1302666192234738910.jpg)
可以见到,当我们向col_char插入10个汉字时,它的长度为20.
尽管我们定义时采用varchar2(10,char)
由此可见,oracle 是根据当前数据采用的字符集,每个汉字字符所占字节数X 字符 来决定了
该字段所占的字节数。
在本例中(11g),varchar2(10, char) 并不等于 varchar2(20)
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img1.ph.126.net/lM_MbDNRDNvOeOFrC3_Jnw==/6597962570097856861.jpg)
因为向col_char插入'aaaaaaaaaaa' (11个a)时会报错, 因为已经超过11个字符!
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img3.ph.126.net/x1q32d-eqPasOVYW0L692g==/6597756961423467043.jpg)
当采用多字节的字符集时,定义字段长度还是采用char 为单位为佳, 因为可以避免字段长度的问题。
当不知道当前数据采用的字符集,1个字符占用多少字节时,可以使用lengthb函数。
注意与length函数的区别哦
四, char 还是 varchar
1.就建1张表,一列为char类型, 一列为varchar2类型, 长度都是20byte.
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img2.ph.126.net/S50Um6sTiN1NM6fslcOgXw==/6597499675702767172.jpg)
2.想该表的两列都插入相同的数据。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img8.ph.126.net/gXQ84HlOVgMBdgCt-ynwVw==/6597265479727247488.jpg)
3. 分别 以char_col 列和 varchar_col列为条件查询
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img0.ph.126.net/uAV7HFEq2yK2nVMV8wyOXw==/6597821832609504540.jpg)
睇起身貌似无咩区别。
5.在继续睇下面的例子
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img4.ph.126.net/Vx6w4cHg36BG7YY5HAX8Yw==/6597231394866774724.jpg)
上面可以睇出他们其实不一样, char(20)类型会将 'Hello world' 变成 ‘Hello world ' 来存储。
当对比 char类型的列 和 常量时, 两边都会做Rtrim 处理(删掉右边空格)
所以
select * from test_char_varchar where char_col = 'Hello World'
相当于:
select * from test_char_varchar where rtrim(char_col) = rtrim('Hello World')
但是当char类型列和varchar2类型列对比时, 是不会做这种处理的
既系
'Hello world' != ‘Hello world '
如果要让char_col 列 与varchar_col列相等, 有两种办法
第一种是: 使用rtrim 把char_col列右边的空格去掉。
第二种是:使用rpad 把 varchar_col右边用空格填充。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img0.ph.126.net/PfVdI0lnrzc8xNFSUqlQcg==/6597731672656026920.jpg)
注意: 如果使用rtrim函数, 那么使用rtrim 函数的列的索引失效, 除非那个列的索引本身就是使用rtrim 的函数索引。
此外还会绑定变量时出现问题。
五, nchar 和 nvarcahr2
如果系统需要集中管理和存储多种字符集, 就需要使用这两种字符类型。 在使用nchar 和
nvarchar2时, 文本内容采用国家字符集来存储和管理,而不是当前数据库的字符集。
这两种类型的长度制定的是字符数,而不是字节数。
NLS 国家语言支持(National Language Support)
在oracle 9i 以后的版本, 数据库的国家字符集可以是: utf-8 和 AL16UTF-16两种。
1.新建1个表, 有两列, 类型分别是 nchar 和 nvarchar2 长度都是10.
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img4.ph.126.net/d8ljmDU3PEBtXi4zIBuLKg==/6597802041400204974.jpg)
2.插入一些数据
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img7.ph.126.net/cDkjeW8EH8cY4qAjahsOMQ==/6597720677539750897.jpg)
在9i 之前的版本,插入时加上N时, 在处理时跟普通方式有区别。
但是在10g时已经有了改变,加不加N都一样,这里只是为了测试。
再插入一行数据
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img6.ph.126.net/gWVzm4nEIN4KHuJI8fp5NQ==/6597136836866789876.jpg)
3. 查看每行 col_nchar列的存储方式.
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img7.ph.126.net/KmClYXItSby9s5e29xSh2w==/6597262181192365597.jpg)
Typ=96 与char的类型编码一样。
Len=20 每一行的长度都是20字节。 跟char 一样都是定长。 但是char(10)长度是10,而nchar(10)长度
是20字节。也就是说,统统以两个字节来表示1个字符。
150,72 表示陈
0,97 表示'a'
0,32 表示空格。
4. nvarchar2的存储
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img7.ph.126.net/wynw2_nMNIZI37pi1GFqXQ==/6597351241634198227.jpg)
Typ=1 与varcahr2一样。
但是每一行的len值都不全相同, 也就系讲唔会用空格来填充。 与varchar2一样
每1个字符都会用两个字节来存储,跟nchar一样
b 存储为 0.98
陈希比 存储为 150,72,94,12,107,212
5.nchar 与 nvarchar2的数据定义。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img0.ph.126.net/NRXg5lt7qw8EZvVbfdzn9w==/6597741568260678100.jpg)
注意虽然类型是写着nchar(10),实际上长度是20字节的。
所以一张表某列如果能保证数据都是字母数字, 用char(10), 是比nchar(10)节省1半空间的。
需要注意的是: 在char(or varchar2) 和 nchar(or nvarchar2) 对汉字的实际存储值是不一样的,因为采用了不同的字符集,就会有
不用的字符编码。
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img5.ph.126.net/DI3mIgj-AzPM9xN6FLGi9w==/6597873509656011345.jpg)
这是采用的字符集系统是ZHS16GBK
可以很容易地把它转成ascii码
高位*256(2的8次方) + 低位
179*256 + 194 = 46018
而46018正好就是汉字’陈‘的 ascii码
![Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011 Oracle数据类型及存储方式——字符类型篇 - 饥民 - 饥民2011](http://img0.ph.126.net/LbWRwS4UXATeb0OzV_vtlA==/6597546954702561750.jpg)
而在nchar 和 nvarchar2中, 采用的是UTF-8 或 UTF-16 的字符集。
由上面例子得知汉字 '陈’ 在 nchar 中 存储为 150,72. 与ascii码是不兼容的。