我有一个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)
在类似的情况下,我必须检索 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 中执行此操作,但最新版本我必须使用强制转换
| 归档时间: |
|
| 查看次数: |
61927 次 |
| 最近记录: |