SQL - 如何清理损坏的html列?

时间:2015-10-19 19:37:59

标签: html sql sql-server richtext

我有一个表,其中一个列中存有html。有些数据似乎已损坏,并且有很多代码应该是

<p></p>

但是有:

<p>&nbsp;</p><p>&amp;lt;p&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;amp;amp;lt;p&amp;amp;amp;gt; 

清理这个的最佳方法是什么?我已经能够使用以下方法识别大约200行:

select [procedure], * from table 
where [procedure] like '%;amp;%[!a-z]%'
or [procedure] like '%;gt;[a-z]%'
or [procedure] like '%;lt;[a-z]%'

更新: 坏单元的一个例子是:

<p>&nbsp;</p><p>&amp;lt;p&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;amp;amp;lt;p&amp;amp;amp;gt;This CR documents the ILO CRC meeting for units 2&amp;amp;amp;amp;amp;3 on 9/17/14.&amp;amp;amp;lt;/p&amp;amp;amp;gt;&amp;amp;amp;lt;p&amp;amp;amp;gt;Management has been notified.&amp;amp;amp;lt;/p&amp;amp;amp;gt;&amp;amp;lt;/p&amp;amp;gt;&amp;lt;/p&amp;gt;</p><p>&nbsp;</p>

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,这听起来最合乎逻辑。

update tablename
set procedure = '<p></p>'
where [procedure] like '%;amp;%[!a-z]%'
  or [procedure] like '%;gt;[a-z]%'
  or [procedure] like '%;lt;[a-z]%'

答案 1 :(得分:0)

这就是我目前所倾向的。我认为在我弄清楚用户输入数据的方式之前,添加存储过程或触发器也会有所帮助。

update table
set [procedure] = REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
[procedure], '&amp;gt;','>')
, '&amp;lt;','<')
, '&amp;quot;','"')
, '&nbsp;',' ')
, '&quot;', '"')