我有一个表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
列值。
还有其他好的解决方法吗?
答案 0 :(得分:1)
好,所以您正在处理XML输出,并且担心特殊字符...
我个人将CDATA
部分用于任何可能包含特殊字符的数据...
<name><![CDATA[Mike & Son's Auto]]></name>
由XML解析器处理,就像
<name>Mike & Son'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()仅将&和<转换为我所看到的...