我有一个名为
service
的表和一个名为 xml
的列。在其中一条记录中,xml
值为:
SELECT xml
FROM service
WHERE xml LIKE '%Password%;
输出
<UseUDS>true</UseUDS><UseUserCredential>true</UseUserCredential>**<DN>amrit</DN><Password>amrit</Password>**<SearchContext1></SearchContext1><SearchContext2></SearchContext2><SearchContext3></SearchContext3><RecursiveSearch1>true</RecursiveSearch1><SearchTimeout>5</SearchTimeout><BaseFilter></BaseFilter><PredictiveSearchFilter></PredictiveSearchFilter>
我想使用replace函数编写一个更新语句。它应该从名为 xml 的列中删除
<DN>amrit</DN><Password>amrit</Password>
并保留其其余内容。
请注意,
amrit
可以是任何东西!
我尝试使用通配符,但没有帮助:
UPDATE service
SET xml = REPLACE(xml,'<DN>%</DN><Password>%</Password>','')
WHERE xml LIKE '%Password%;
是否可以使用
UPDATE
编写 REPLACE()
语句,其中我们只知道要剪切的字符串的开头和结尾?
我假设您正在使用相对较新版本的 Informix(例如 11.70 或 12.10)。
这是实现您想要做的事情的一种方法,前提是您的 xml 字符串将保持相当简单,如您所示:
update service set xml = concat(substring_index(xml, "<DN>", 1), substring_index(xml, "</Password>", -1)) where xml like '%Password%' ;