DB2, как заменить двойную кавычку, возвращаемую элементом XML

Я могу успешно получить значение элемента XML, используя следующий SQL

*SELECT XMLQUERY('$item/*:ItemSpec/*:AdditionalDescription/*:ABCDescription/text()' PASSING productval.value_xml as "item") AS H_DESCRIPTION FROM USER1.XMETA*

Это возвращает значение с двойными кавычками ("). Как заменить его другим значением в том же запросе выбора. Я пробовал что-то вроде этого, но это не сработало.

Select REPLACE(XMLQUERY('$item/*:ItemSpec/*:AdditionalDescription/*:ABCDescription/text()' PASSING productval.value_xml as "item"),'"','QUOT') AS H_DESCRIPTION

Ошибка: не найдена авторизованная подпрограмма с именем «REPLACE» типа «FUNCTION», имеющая совместимые аргументы... SQLCODE=-440, SQLSTATE==-42884.


person Mohan    schedule 06.09.2014    source источник


Ответы (1)


XMLQUERY возвращает тип XML, попробуйте преобразовать его в varchar, прежде чем применять к нему REPLACE:

REPLACE(XMLCAST(XMLQUERY('$item/*:ItemSpec/*:Addition ...) AS VARCHAR(...)), '"','QUOT') AS ..
person Lennart    schedule 06.09.2014
comment
Спасибо, Леннарт. Приведение его к Varchar сработало для меня. - person Mohan; 07.09.2014