我有一个 db2 表,该表带有 blob 列,其中包含压缩的xml数据。现在,我想从xml的开头获取大约20个字符。我尝试将 blob 投射到 varchar ,只要可以将整个Blob强制转换为varchar,它就可以正常工作。如果它太长,那么我将收到一个错误,并且sql请求因以下错误而中断: SQL错误[22001]:值“ ...”太长。SQLCODE = -433,SQLSTATE = 22001,DRIVER = 4.14.88
是否有机会仅广播斑点的第一部分?
我想要实现的是从xml获取ID,然后可以将其用作另一个sql请求的一部分。
到目前为止,我的SQL:
SELECT SUBSTRING(CAST(DATA AS VARCHAR(17)),10,8,OCTETS)
FROM table
WHERE TRANSACTION_ID = '123';
谢谢!
答案 0 :(得分:0)
正如dnoeth在他的评论中所说,答案只是在投射Blob之前先对其进行替换。
因此,sql看起来像这样:
SELECT CAST(SUBSTR(DATA,10,8) AS VARCHAR(8))
FROM table
WHERE TRANSACTION_ID = '123';