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

SQL - how can I clean up corrupted html column?

我有一个 table,其中一列存储了 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>

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

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

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

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