DB2将大型CLOB(> 32KB)转换为文本?

Pet*_*ier 6 db2 varchar clob

我有一个DB2(9.5.1)表,其定义如下:

CREATE TABLE MY_TABLE 
( 
   ID INTEGER DEFAULT 0 NOT NULL, 
   TEXT CLOB(104857600), 
   PRIMARY KEY (ID) 
);
Run Code Online (Sandbox Code Playgroud)

现在,如果我想查询存储在CLOB中的实际文本字符串,我就是这样做的:

select cast(t.TEXT as varchar(32000))
  from MY_TABLE t
  where t.ID = 1;
Run Code Online (Sandbox Code Playgroud)

现在的问题是我的文本被截断了,但对于varchar,最大长度是32KB,因此该查询失败:

select cast(t.TEXT as varchar(33000))
  from MY_TABLE t
 where t.ID = 1;
Run Code Online (Sandbox Code Playgroud)

还有另一种可能性,我如何检索CLOB的全部内容作为文本输出?

彼得

小智 8

我在网上的其他地方发现了这个,并且认为我会分享看到它在32k限制附近工作.

SELECT 
  XMLCAST (
    XMLPARSE (
      DOCUMENT CAST (
        MY_CLOB_DATA AS BLOB
      ) 
      PRESERVE WHITESPACE
    ) as XML
  ) 
FROM 
MY_TABLE
WHERE ID = 1
Run Code Online (Sandbox Code Playgroud)


Kal*_*oni 2

在类似的情况下,我必须检索 xml 数据,这对我有用

select my_id, cast(xmlserialize(my_column as clob(1m)) as varchar(20000)) from schema.my_table where my_id  =  463
Run Code Online (Sandbox Code Playgroud)

早些时候,我可以在没有 CAST 的情况下在 squirrel sql 中执行此操作,但最新版本我必须使用强制转换

  • 但是你一路上转换为 varchar(20000) 。它如何处理大小 > 32k 的 varchar? (3认同)