-1

我正在编写一个查询来查找/替换具有明确开头和结尾的模式,中间有通配符。这是原始网址:

  "></title><script src="http://www.weblearn.edu"></script><!--   

这是结果:

  cript src="http://www.weblearn.edu"></script><!--  

-- 这是想要的结果:(没有字符或空格)

-- 我怎样才能更换整个东西?谢谢你的帮助。

 SELECT 

 CASE
 WHEN PATINDEX('">%http%<!--', AcademicDishonestyDesc) > 0 THEN 
 STUFF(AcademicDishonestyDesc, PATINDEX('">%http%<!--', AcademicDishonestyDesc), LEN('">%http%<!--'), '')
 END
 FROM AMS_CoursePolicyAcademicDishonesty
 WHERE      PATINDEX('">%http%<!--', AcademicDishonestyDesc) > 0

 GO
4

1 回答 1

0

似乎最安全和最容易做的事情 - 因为您已经识别了 URL - 只是从任何 HTML 标记中删除 src 属性:

UPDATE dbo.table SET column = REPLACE(column, ' src="http://...bad script..."', '');

一个简单的例子:

DECLARE @n TABLE (x VARCHAR(255));

INSERT @n(x) VALUES
('...><script src="http://www.weblearn.edu"></script><!--'),  
('......><script src="http://www.weblearn.edu"></script><!--'),
('..><script src="http://www.weblearn.edu"></script><!--'),
('....><script src="somethingelse"></script><!--');

UPDATE @n SET x = REPLACE(x, ' src="http://www.weblearn.edu"', '')
  WHERE x LIKE '% src="http://www.weblearn.edu"%';

SELECT x FROM @n;

结果(空脚本标签在 HTML 中绝对没问题):

...><script></script><!--
......><script></script><!--    
..><script></script><!--  
....><script src="somethingelse"></script><!--

对每个错误的脚本 URL 重复。如果这不是您所追求的,请根据要求更新您的问题(例如,向我们展示所需的结果)。

于 2012-09-25T20:28:03.853 回答