Многократные замены на замену столбца из таблицы замены - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть требование, где у меня есть таблица REPLACE_Table. Эта таблица будет иметь 2 столбца: один будет Original_string, а другой - Replacement_String.

У меня есть курсор, работающий на Item_master таблице. Для каждой записи в столбце Item_description мне нужно отсканировать Replace_Table/Original_string и заменить его на Replace_Table/replacement_string.

Например, если у моего Replace_Table есть эти 2 строки:

Original_string    Replacement_String
-------------------------------------- 
LO                 @@
WO                 ()

Если мой первый Item_Description - «HELLO WORLD», то я должен получить результат как «HEL @@ () RLD».

Я не могу использовать рекурсивную функцию Replace в SQL, потому что я не знаю количество записей в моем REPLACE_Table. Я не могу использовать XLATE, потому что это не символ для замены персонажа.

Единственное решение, которое я имею в виду, это прочитать REPLACE_Table в цикле и продолжать заменять значение столбца Item_Description, используя REPLACE в SQL.

Есть ли другое хорошее решение?

1 Ответ

0 голосов
/ 06 сентября 2018

Хорошо, вы имеете дело с выводом XML и беспокоитесь о специальных символах ...

Лично я бы хотел использовать раздел CDATA для любых данных, которые могут содержать специальные символы ...

<name><![CDATA[Mike & Son's Auto]]></name>

Обрабатывается синтаксическим анализатором XML так же, как

<name>Mike &amp; Son&apos;s Auto</name> 

будет.

Также подумайте о том, какие инструменты вы могли бы использовать для веб-сервисов. Отличный открытый код Скотта Клемента HTTP API уже включает в себя процедуру http_EscapeXml().

В противном случае рассмотрите возможность использования функции XMLTEXT (), встроенной в Db2 для i

myText = 'Mike & Son''s Auto';

exec SQL
  values (XMLSERIALIZE(XMLTEXT(:myText)
                     as varchar(50)
                     excluding XMLDECLARATION
                     ))  into :myXmlText; 

Хотя XMLTEXT () конвертирует только & и <из того, что я вижу ... </p>

...