从HANA的BLOB列中提取XML数据

问题描述 投票:1回答:1

我想将HANA函数XMLEXTRACT应用于包含XMLEXTRACT编码的XML文档的表的BLOB列。

[在具体示例中,我有一个数据库表UTF8,其数据类型为zprc_prot_cont的列名为content,我想提取包含在XML文档中第一个BLOB元素的文本内容在该列中。由于函数<AKTNR>仅适用于数据类型XMLEXTRACTCLOBNCLOBVARCHAR的自变量,而不适用于类型NVARCHAR的自变量,因此需要进行一些转换。但是哪个是正确的?

我尝试了BLOBcast()之类的转换函数,但没有成功:

to_clob()

答案是

SQL-ERROR 266:数据类型不一致:BLOB对函数无效to_clob:第1行col ...

sql database sap hana
1个回答
0
投票

自己找到解决方案。使select xmlextract( to_clob( content ), '//AKTNR/text()' ) as aktnr from zprc_prot_cont 列用作BLOB的参数所需的功能是XMLEXTRACTto_varbinary的串联:

bintostr

备注:

  1. 当然,如果函数select xmlextract( bintostr( to_varbinary( content ) ), '(//MATNR)[1]/text()' ) as matnr from zprc_prot_content where ... 可以在后台处理转换,那就更好了,假设二进制输入是UTF8编码的XML文档。但这没有实现。
  2. A caveat:如果xmlextract表达式未产生任何结果,则函数XPath会根据文档错误中止(我期望有xmlectract值作为结果)。
© www.soinside.com 2019 - 2024. All rights reserved.