2011-09-09 48 views
6

我有这个CLOB列,我需要使用select语句来显示它。显示4000+个字符的CLOB列

我以前DBMS_LOB.SUBSTR将其转换为varchar2

select DBMS_LOB.SUBSTR(T1.CLOB_COL,4000,1) CLOB_COL from T1 

我的问题是我的一些CLOBS包含超过4000个字符。我如何显示它...任何想法/建议?

非常感谢..

+0

你是如何显示的? – eaolson

回答

0

当SQL访问VARCHAR2只能是4000个字节长。如果您想使用大于4000字节的CLOB,则无法将其转换为VARCHAR2,您必须将其作为CLOB工作。

你使用什么工具?

大多数工具/语言都可以在本地使用CLOB。只要选择栏:

select T1.CLOB_COL from T1 
6

我想你可以显示块作为单独的行?

SELECT ROWNUM as chunk_no,ID, SUBSTR (t1.clob_col, (ROWNUM-1)*4000, 4000) AS chunk 
FROM t1 
CONNECT BY (ROWNUM-1)*4000 <= LENGTH(t1.clob_col) 

,或者是有约束的一个CLOB可能是你系统中的最大尺寸,你可以硬编码文本列数返回

SELECT SUBSTR (t1.clob_col, 1, 4000) AS pt1, 
     CASE WHEN LENGTH (t1.clob_col) > 4000 THEN SUBSTR (t1.clob_col, 4001, 4000) END AS pt2, 
     CASE WHEN LENGTH (t1.clob_col) > 8000 THEN SUBSTR (t1.clob_col, 8001, 4000) END AS pt3, 
     CASE WHEN LENGTH (t1.clob_col) > 12000 THEN SUBSTR (t1.clob_col, 1201, 4000) END AS pt4 
FROM t1 
+0

搜索并尝试了许多不同的技术之后,这是使用直接SQL的唯一工作。大多数其他解决方案需要PL/SQL或其他需要特殊权限的方法。 – bobfet1

相关问题