在Oracle 数据类型中如何使用dump函数


  本文标签:Oracle 数据类型

  

  

以下的文章主要是通过实例,来分析Oralce数据类型  。我们以Oracle 10G作为为基础,本文以介绍Oralce 10g引入的新的数据类型  。来引出让Oracle数据类型的相关实际操作,揭示Oracle 数据类型的相关类型的特点  。

  

字符类型

  

  1.1 char

  

  定长字符串,会用空格来填充来达到其最大长度,最长2000个字节  。

  

  1. 新建一个测试表test_char.,只有一个char类型的列  。长度为10

  SQL> create table test_char(colA char(10));

  

  Table created

  

  2. 向这个表中插入一些数据  。

  

  SQL> insert into test_char values(a);

  

  1 row inserted

  SQL> insert into test_char values(aa);

  1 row inserted

  SQL> insert into test_char values(aaa);

  1 row inserted

  SQL> insert into test_char values(aaaa);

  1 row inserted

  SQL> insert into test_char values(aaaaaaaaaa);

  1 row inserted

  

  注意:最多只能插入10个字节  。否是就报错  。

  SQL> insert into test_char values(aaaaaaaaaaa);

  

  insert into test_char values(aaaaaaaaaaa)

  ORA-12899: value too large for column "PUB_TEST"."TEST_CHAR"."COLA" (actual: 11, maximum: 10)

  3.在Oracle 数据类型中使用dump函数可以查看每一行的内部存数结构  。

  SQL> select colA, dump(colA) from test_char;

  

  COLA DUMP(COLA)

  

  a Typ=96 Len=10: 97,32,32,32,32,32,32,32,32,32

  

  aa Typ=96 Len=10: 97,97,32,32,32,32,32,32,32,32

  

  aaa Typ=96 Len=10: 97,97,97,32,32,32,32,32,32,32

  

  aaaa Typ=96 Len=10: 97,97,97,97,32,32,32,32,32,32

  

  aaaaaaaaaa Typ=96 Len=10: 97,97,97,97,97,97,97,97,97,97

  

  注意:Typ=96 表示数据类型的ID  。Oracle为每一种数据类型都进行了编号  。说明char类型的编号是96.

  Len =10 表示所在的内部存储的长度(用字节表示)  。虽然第一例只存了一个字符’a’,但是它还是占用了10个字节的空间  。

  

  97,32,32,32,32,32,32,32,32,32 表示内部存储方式  。可见Oracle的内部存储是以数据库字符集进行存储的  。

  

  97正好是字符a的ASCII码  。

  

  可以使用chr函数把ASCII码转成字符  。

  

  SQL> select chr(97) from dual;

  

  CHR(97)

  

  a

  

  要想知道一个字符的ASCII码,可以使用函数ascii

  SQL> select ascii(a) from dual;

  

  ASCII(A)

  

  97

  

  32正好是空格的ascii码值  。

  Char类型是定长类型  。它总会以空格来填充以达到一个固定宽度  。

  

  使用char类型会浪费存储空间  。

  

  Oracle的数据类型的长度单位是字节  。

  

  SQL> select dump(汉) from dual;

  

  DUMP(汉)

  

  Typ=96 Len=2: 186,186

  

  可见一个汉字在Oracle中是占用了两个字节的  。

  英文字母或符号只占用一个字节  。

  

  Char(10)最多可存放5个汉字  。

  

  以上的相关内容就是对Oracle 数据类型的相关内容介绍,望你能有所收获  。