今天遇到一张表中内容为LONG类型的数据,在PL/SQL DEVELOPER中是可以直接查看到该数据类型为LONG的字段内容的。

但在PLSQL中查看的内容则与之不同,显示为数值型的

SQL> SET LONG 999999999
SQL> SELECT HIGH_VALUE FROM USER_TAB_PARTITIONS;
 
HIGH_VALUE
---------------
1462840498, 4966
1462840498, 4966
1462840498, 4966
1462840498, 4966

我想进行类型间的转化,比如把LONG字段类型转化为字符型。怎么办?

网上也提供了办法就是先把LONG类型转化为CLOB,然后再通过数据库的DBMS_LOB进行转化

首先通过TO_LOB函数将LONG类型转化为CLOB类型,官网中解释该函数的用法:

http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions205.htm#i79464

 

提到要进行转化,必须把该字段的内容重新插入到一张新表中数据类型为CLOB的字段中。

CREATE TABLE TEMP_UP(DATA_L CLOB);

INSERT INTO TEMP_UP (SELECT TO_LOB(HIGH_VALUE) FROM USER_TAB_PARTITIONS WHERE ROWNUM<2 );

--获取CLOB数据类型字段的长度

SELECT DBMS_LOB.GETLENGTH(DATA_L) FROM TEMP_UP;

--截取字段内容中从第11个字符开始向后19个字节长度的内容
DBMS_LOB.SUBSTR(DATA_L,11,19)

--截取CLOB数据类型字段的所有内容

DBMS_LOB.SUBSTR(DATA_L,32767)

 

具体用法可以参照:http://blog.csdn.net/liou825/article/details/7971865