是否可以使用替换来编写更新语句,其中我们只知道要剪切的字符串的开头和结尾

问题描述 投票:0回答:1

我有一个名为

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()
语句,其中我们只知道要剪切的字符串的开头和结尾?

replace sql-update informix
1个回答
1
投票

我假设您正在使用相对较新版本的 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%' ;

以下是 Informix 中可用的字符串操作函数的完整列表 https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_1554.htm#ids_sqs_1554

© www.soinside.com 2019 - 2024. All rights reserved.