Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 显示带有4000+;人物_Oracle_Clob - Fatal编程技术网

Oracle 显示带有4000+;人物

Oracle 显示带有4000+;人物,oracle,clob,Oracle,Clob,我有这个CLOB列,需要使用select语句显示它 我使用DBMS\u LOB.SUBSTR将其转换为varchar2: select DBMS_LOB.SUBSTR(T1.CLOB_COL,4000,1) CLOB_COL from T1 我的问题是我的一些CLOB包含超过4000个字符。我如何展示它……有什么想法/建议吗 非常感谢。当使用SQL访问时,VARCHAR2只能有4000字节长。如果要使用大于4000字节的CLOB,则无法将其转换为VARCHAR2,必须将其作为CLOB使用 你用

我有这个CLOB列,需要使用select语句显示它

我使用
DBMS\u LOB.SUBSTR
将其转换为
varchar2

select DBMS_LOB.SUBSTR(T1.CLOB_COL,4000,1) CLOB_COL from T1
我的问题是我的一些CLOB包含超过4000个字符。我如何展示它……有什么想法/建议吗


非常感谢。

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

你用什么工具

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

select T1.CLOB_COL from T1

我想您可以将块显示为单独的行

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)

在搜索和尝试了许多不同的技术之后,这是唯一对我有效的方法,使用直接SQL。大多数其他解决方案需要PL/SQL或其他需要特殊权限的方法
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