2011-09-09 12 views
6

Ho questa colonna CLOB e ho bisogno di visualizzarla utilizzando un'istruzione select.Visualizzazione colonna CLOB con 4000+ caratteri

ho usato DBMS_LOB.SUBSTR per convertirlo in varchar2:

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

Il mio problema è un po 'della mia CLOB contiene più di 4000 caratteri. Come posso visualizzarlo ... qualche idea/suggerimento?

grazie mille ..

+0

Come stai visualizzando esso? – eaolson

risposta

0

VARCHAR2 può essere solo 4000 byte lunghi quando si accede con SQL. Se vuoi lavorare con un CLOB più grande di 4000 byte, non puoi convertirlo in VARCHAR2, devi lavorarlo come CLOB.

Che strumento usi?

La maggior parte degli strumenti/lingue può funzionare con CLOB in modo nativo. Basta selezionare la colonna:

select T1.CLOB_COL from T1 
6

Immagino che potresti visualizzare i blocchi come righe separate?

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 se c'è un vincolo sulla dimensione massima di un CLOB potrebbe essere nel vostro sistema si potrebbe difficile codificare il numero di colonne di testo restituito

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

Dopo aver cercato e provato molte tecniche diverse, questa è l'unica cosa che ha funzionato per me, usando l'SQL diretto. La maggior parte delle altre soluzioni richiede PL/SQL o altri metodi che richiedono autorizzazioni speciali. – bobfet1

Problemi correlati