今天遇到一张表中内容为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类型,官网中解释该函数的用法:
提到要进行转化,必须把该字段的内容重新插入到一张新表中数据类型为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)