Oracle二进制类型和大对象类型基础

来源:互联网 发布:网络本科学位证有用吗 编辑:程序博客网 时间:2024/06/09 19:06

窗体顶端

窗体底端

Oracle二进制类型和大对象类型基础

2013-08-0813:35:47     我来说两句       作者:媛媛小译

收藏    我要投稿

Oracle二进制类型和大对象类型基础

 

一、类型区分 

 

NCLOB 存储单字节的字符数据

 

CLOB 存储多字节的字符数据 

 

BFILE 存储OS文件系统中的二进制文件的指针,文件不存储在数据库里。 

 

BLOB 存储二进制数据 

 

RAW 存储定长二进制数据,需要定义长度,如:

?

1

create table t(s raw(2000);

 

 

LONG RAW 存储可变长二进制数据 

 

二、类型在数据库中的使用 

 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

NCLOB

 

create table t(id int,cont NCLOB);

 

Insert into t(id,cont) values(1,’hello’);

 

select * from t;

 

ID CONT

 

-------------------------

 

1 hello

 

CLOB 同NCLOB。

 

BLOB 暂未找到能直接插入的值的方法。

 

BFILE

 

Conn lyy/lyy

 

Create table bfiletable(id int,obj BFILE);

 

Create or replace directory dir AS ‘d:\’;

 

Conn / as sysdba

 

Grant read directpry dir to lyy;

 

Conn lyy/lyy Insert into bfiletable(id,obj) values(1,filename(‘DIR’,’1.jpg’));

 

Select * from filetable;

 

ID OBJ

 

-------------------------------------------------

 

1 filename(‘DIR’,’1.JPG’)

 

 

RAW 

 

Create table rawtable(id int,obj raw(2000));

 

Insert into rawtable(id,obj) values(1, uti_raw.cast_to_raw(‘hello’));

 

Select * from rawtable;

 

ID OBJ

 

 -------------------------------------------------

 

 1 68656C6C6F

 

 

 

LONG RAW

 

Create table lrawtable(id int,obj long raw);

 

Insert into lrawtable(id,obj) values(1, uti_raw.cast_to_raw(‘hello’));

 

Select * from lrawtable;

 

ID OBJ

 

-------------------------------------------------

 

1 6

 


SQL> desc utl_raw
FUNCTION CAST_TO_NVARCHAR2 RETURNS NVARCHAR2
参数名称                      类型                   输入/输出默认值?
------------------------------ ----------------------- ------ --------
 R                             RAW                    IN
FUNCTION CAST_TO_RAW RETURNS RAW
参数名称                      类型                   输入/输出默认值?
------------------------------ ----------------------- ------ --------
 C                             VARCHAR2               IN
 
CAST_TO_VARCHAR2 Function:
Converts a RAW represented using n data bytes into VARCHAR2 with n data bytes

 

CAST_TO_RAW Function
Converts a VARCHAR2 represented using n data bytes into a RAW with n data bytes
 
SQL> col name for a40;
SQL> select utl_raw.cast_to_raw('甲骨文') name fromdual;

NAME
----------------------------------------
E794B2E9AAA8E69687

 

SQL> select utl_raw.cast_to_varchar2('E794B2E9AAA8E69687') name  from dual;

NAME
----------------------------------------
甲骨文

 

SQL> select dump('甲骨文' ,16) namefrom dual;

NAME
----------------------------------------
Typ=96 Len=9: e7,94,b2,e9,aa,a8,e6,96,87

下面是常用到了两个函数:
utl_raw.cast_to_raw([varchar2]);--将varchar2转换为raw类型
utl_raw.cast_to_varchar2([raw]);--将raw转换为varchar2类型(是将raw数据类型的数据而不是其他数据类型的数据转换为varchar2类型?)

0 0
原创粉丝点击