Извлечение XML данных из столбца BLOB в HANA - PullRequest
1 голос
/ 05 марта 2020

Я хочу применить функцию HANA XMLEXTRACT к столбцу BLOB таблицы, содержащей документ XML в кодировке UTF8.

В конкретном примере у меня есть таблица базы данных zprc_prot_cont со столбцом с именем content типа данных BLOB, и я хочу извлечь текстовое содержимое первого элемента <AKTNR> в XML документ, который содержится в этом столбце. Поскольку в соответствии с документацией функция XMLEXTRACT применяется только к аргументам типа данных CLOB, NCLOB, VARCHAR или NVARCHAR, но не к типу BLOB, требуется некоторое преобразование. Но какой из них правильный?

Я пробовал функции преобразования, такие как cast() или to_clob(), но безуспешно:

select xmlextract( to_clob( content ), '//AKTNR/text()' ) as aktnr 
  from zprc_prot_cont

Ответ:

SQL -ERROR 266: несоответствующий тип данных: BLOB недопустим для функции to_clob: строка 1 столбец ...

1 Ответ

0 голосов
/ 08 марта 2020

Нашел решение сам. Необходимая функция для того, чтобы столбец BLOB работал в качестве аргумента для XMLEXTRACT, состоит из to_varbinary с bintostr:

select 
  xmlextract( bintostr( to_varbinary( content ) ), 
              '(//MATNR)[1]/text()' ) 
    as matnr
  from zprc_prot_content
  where ...

A предостережение : если XPath выражение не дает результата, функция xmlectract прерывается с ошибкой в ​​соответствии с документацией (я бы ожидал, что в результате получится значение null).

...