编写SQL脚本删除数据库表中含12_67.gif的img标签
删除SQL列中指定的img标签
需求:数据库内某nvarchar类型的列存储了HTML文本,需要仅删除所有包含12_67.gif的<img>标签,保留其他内容和标签。
解决方案脚本
假设目标表名为YourTable,存储HTML的列名为HtmlContent,可以用以下SQL脚本实现:
-- 定义匹配包含12_67.gif的img标签的模式 DECLARE @SearchPattern NVARCHAR(100) = '%<img%12_67.gif%>%' DECLARE @UpdateCount INT = 1 -- 循环处理,直到没有符合条件的标签被删除 WHILE @UpdateCount > 0 BEGIN UPDATE YourTable SET HtmlContent = STUFF( HtmlContent, -- 定位第一个符合条件的img标签起始位置 PATINDEX(@SearchPattern, HtmlContent), -- 计算要删除的标签长度(从起始位置到闭合>的长度) CHARINDEX('>', HtmlContent, PATINDEX(@SearchPattern, HtmlContent)) - PATINDEX(@SearchPattern, HtmlContent) + 1, '' -- 替换为空,即删除该标签 ) -- 获取本次更新的行数,判断是否继续循环 SET @UpdateCount = @@ROWCOUNT END
脚本说明
- 用
PATINDEX定位第一个包含12_67.gif的img标签的起始位置 - 用
CHARINDEX找到该标签的闭合>位置,计算出整个标签的长度 - 通过
STUFF函数将这段标签内容替换为空,实现删除 - 循环执行直到没有符合条件的标签被更新(
@@ROWCOUNT为0),确保所有匹配的标签都被处理
执行后,原文本中两个包含12_67.gif的img标签会被移除,其他内容保持不变,符合预期结果。
内容的提问来源于stack exchange,提问作者AlexGH
相关产品推荐
相关产品推荐

