1. varchar2/blob/clob字段含义
数据库中提供了三种字段类型Varchar2、Blob和Clob用于存储字符串或二进制数据,其中Varchar2、Clob用于存储字符串数据,而Blob用于存储二进制数据。
Varchar2采用单字节存储,有两个最大长度:varchar2在表中字段长度最大为4000,在变量中长度最大为32767。
Blob采用单字节存储,适合保存二进制数据,如图片文件。
Clob采用多字节存储,适合保存大型文本数据。
2. clob转换为char
2.1环境准备
create table tb_clob(id int,clobcolumn
clob);
insert into tb_clob values (1,'clob字段类型
换行之后
需要转换为char字段');
commit;
SELECT * FROM tb_clob;
1
2.2 plsql之间导出excel
----在plsql中查询出数据后,选中数据,然后右键选择copy to excl就能看到数据咯。
ID
CLOBCOLUMN
1
clob字段类型换行之后需要转换为char字段
----使用plsql虽然比较方便,但是可能会报错,超出excel单元格可容纳最大字符32767
2.3 dbms_lob.substr
----使用dbms_lob.substr转换,clob转为char字符最大为4000
select
id,clobcolumn,dbms_lob.substr(clobcolumn,4000) from tb_clob;
1
"clob字段类型
换行之后
需要转换为char字段"
---- DBMS_LOB.SUBSTR(col1,10,4)表示从第4个字节开始取出10个字节
2.4 to_char
select id,clobcolumn,to_char(clobcolumn)
from tb_clob;
1
"clob字段类型
换行之后
需要转换为char字段"
----如果字段长度超过4000时报错,可以用substr对clob字段进行截取
select
id,clobcolumn,to_char(substr(clobcolumn,0)) from tb_clob;
----substr(column,4,10)表示从column中第4个字符开始截取到第10个字符
3. blob转换为char
3.1环境准备
create table tb_blob(id int,blobcolumn
blob);
----blob无法直接插入字符,或者利用utl_raw.cast_to_raw将要插入的字符转换为二进制在插入
----使用utl_raw.cast_to_raw插入数据
insert into tb_blob values
(100,utl_raw.cast_to_raw('blob字段类型
换行之后
需要转换为char字段'));
commit;
SELECT * FROM tb_blob;
100
----利用utl_raw.cast_to_raw()转为二进制在插入
select utl_raw.cast_to_raw ('现在转为2进制会是什么呢?')
from dual;
CFD6D4DAD7AACEAA32BDF8D6C6BBE1CAC7CAB2C3B4C4D8A3BF
insert into tb_blob values(200, 'CFD6D4DAD7AACEAA32BDF8D6C6BBE1CAC7CAB2C3B4C4D8A3BF');
commit;
SELECT * FROM tb_blob;
100
200
3.2 plsql导出excel---乱码
----想像上面clob转char样,使用plsql查询数据后直接导出excel
ID
BLOBCOLUMN
100
汢扯???????????????????????????????????????????????????????????档牡??
----之所以是乱码,是因为存放的数据是二进制的
3.3 utl_raw.cast_to_varchar2
select
t.*,utl_raw.cast_to_varchar2(blobcolumn) from tb_blob t;
100 "blob字段类型
换行之后
需要转换为char字段"
200 现在转为2进制会是什么呢?