2011-09-09 49 views
6

Tengo esta columna CLOB y necesito mostrarla con una instrucción select.Mostrar la columna CLOB con más de 4000 caracteres

que utilizan DBMS_LOB.SUBSTR para convertirlo en varchar2:

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

Mi problema es parte de mi CLOBS contiene más de 4000 caracteres. ¿Cómo puedo mostrarlo ... alguna idea/sugerencia?

muchas gracias ..

+0

¿Cómo estás mostrarla? – eaolson

Respuesta

0

VARCHAR2 sólo puede ser 4000 bytes de longitud cuando se accede con SQL. Si desea trabajar con un CLOB de más de 4000 bytes, no puede convertirlo a VARCHAR2, debe trabajarlo como un CLOB.

¿Qué herramienta usas?

La mayoría de las herramientas/idiomas pueden funcionar con CLOB de forma nativa. Simplemente seleccione la columna:

select T1.CLOB_COL from T1 
6

Supongo que podría mostrar los trozos como filas separadas?

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) 

o si hay una restricción en el tamaño máximo de un CLOB podría estar en su sistema se podría codificar el número de columnas de texto devuelto

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

Después de buscar e intentar muchas técnicas diferentes, esto es lo único que funcionó para mí, utilizando SQL directo. La mayoría de las otras soluciones requieren PL/SQL u otros métodos que requieren permisos especiales. – bobfet1

Cuestiones relacionadas