我想将HANA函数XMLEXTRACT
应用于包含XMLEXTRACT
编码的XML文档的表的BLOB
列。
[在具体示例中,我有一个数据库表UTF8
,其数据类型为zprc_prot_cont
的列名为content
,我想提取包含在XML文档中第一个BLOB
元素的文本内容在该列中。由于函数<AKTNR>
仅适用于数据类型XMLEXTRACT
,CLOB
,NCLOB
或VARCHAR
的自变量,而不适用于类型NVARCHAR
的自变量,因此需要进行一些转换。但是哪个是正确的?
我尝试了BLOB
或cast()
之类的转换函数,但没有成功:
to_clob()
答案是
SQL-ERROR 266:数据类型不一致:BLOB对函数无效to_clob:第1行col ...
自己找到解决方案。使select xmlextract( to_clob( content ), '//AKTNR/text()' ) as aktnr
from zprc_prot_cont
列用作BLOB
的参数所需的功能是XMLEXTRACT
与to_varbinary
的串联:
bintostr
备注:
select
xmlextract( bintostr( to_varbinary( content ) ),
'(//MATNR)[1]/text()' )
as matnr
from zprc_prot_content
where ...
可以在后台处理转换,那就更好了,假设二进制输入是UTF8编码的XML文档。但这没有实现。xmlextract
表达式未产生任何结果,则函数XPath
会根据文档错误中止(我期望有xmlectract
值作为结果)。