2011-09-09 347 views
6

私はこのCLOB列を持っており、select文を使用して表示する必要があります。4000文字以上のCLOB列を表示

私はvarchar2に変換するDBMS_LOB.SUBSTRを使用:

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

私の問題は私のCLOBSの一部は4000の以上の文字が含まれています。どのように私はそれを表示することができます...任意のアイデア/提案?

ありがとうございます..

+0

を返されたコードだろうか? – eaolson

答えて

0

VARCHAR2の長さはSQLでアクセスすると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

関連する問題