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.
1 ответ
Решение
XMLQUERY возвращает тип XML, попробуйте привести его к типу varchar, прежде чем применять к нему REPLACE:
REPLACE(XMLCAST(XMLQUERY('$item/*:ItemSpec/*:Addition ...) AS VARCHAR(...)), '"','QUOT') AS ..