【发布时间】:2019-04-12 22:51:05
【问题描述】:
我有一个 db2 表,其中有一个 blob 列,其中包含 gzipped xml 数据。现在我想从 xml 的开头获取大约 20 个字符。我尝试将 blob 转换为 varchar,只要可以将整个 blob 转换为 varchar,它就可以正常工作。如果它太长,那么我会得到一个错误,并且 sql 请求会因以下错误而中断:SQL 错误 [22001]: Value "..." is too long.. 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';
谢谢!
【问题讨论】:
-
DB2 不支持 Blob/二进制数据上的 SUBSTRING(或类似函数)吗?如果列是 gzip 压缩的,那么如何在不解压缩的情况下获取前 n 个字符?
-
其实你是完全正确的! :) 我没有注意到这很容易。
标签: sql casting db2 blob varchar