DB2 将部分 blob 转换为 varchar

DB2 cast partial blob to varchar

我有一个 db2 table 和一个 blob 列,其中包含 gzipped xml数据。现在我想从 xml 的开头获取大约 20 个字符。我尝试将 cast blob 转换为 a varchar,只要整个 blob 可以正常工作被转换为 varchar。如果它 太长 ,那么我将得到一个错误并且 sql 请求中断并出现以下错误:SQL 错误 [22001]:值“...”太长.. SQLCODE=-433,SQLSTATE=22001,DRIVER=4.14.88

是否有机会投射blob的第一部分?

我想要实现的是,从 xml 中获取一个 ID,然后可以将其用作另一个 sql 请求的一部分。

我的 sql 到目前为止:

SELECT SUBSTRING(CAST(DATA AS VARCHAR(17)),10,8,OCTETS)
FROM table
WHERE TRANSACTION_ID = '123';

谢谢!

正如 dnoeth 在他的评论中所说,答案只是在转换之前对 blob 本身进行 substr。
所以 sql 看起来像这样:
SELECT CAST(SUBSTR(DATA,10,8) AS VARCHAR(8)) FROM table WHERE TRANSACTION_ID = '123';