来自替换表的列替换中的多个替换

时间:2018-09-02 06:45:36

标签: sql ibm-midrange rpgle

我有一个表REPLACE_Table的要求。该表将包含2列:一列为Original_string,另一列为Replacement_String

我在Item_master表上运行了一个游标。对于每条记录,在Item_description列中,我需要扫描Replace_Table/Original_string并将其替换为Replace_Table/replacement_string

例如,如果我的Replace_Table具有以下两行:

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

如果我的第一个Item_Description是'HELLO WORLD',那么我应该得到的结果是'HEL @@()RLD'。

我无法在SQL中使用递归Replace函数,因为我不知道REPLACE_Table中的记录数。我不能使用XLATE,因为它不是字符替换字符。

我唯一想到的解决方案是循环读取REPLACE_Table,并继续在SQL中使用Item_Description替换REPLACE列值。

还有其他好的解决方法吗?

1 个答案:

答案 0 :(得分:1)

好,所以您正在处理XML输出,并且担心特殊字符...

我个人将CDATA部分用于任何可能包含特殊字符的数据...

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

由XML解析器处理,就像

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

会的。

还可以考虑研究可能用于Web服务的任何工具。斯科特·克莱门特(Scott Klement)出色的开源HTTP API已包含http_EscapeXml()过程。

如果失败,请考虑使用Db2 for i中内置的XMLTEXT()函数

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

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

尽管XMLTEXT()仅将&和<转换为我所看到的...