2015-10-19 40 views
0

我有一张桌子,其中一列有html存储在里面。一些数据似乎已损坏,并有很多的代码,应该是SQL - 如何清理损坏的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行usings:

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> 

回答

0

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

update table 
set [procedure] = REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
[procedure], '&amp;gt;','>') 
, '&amp;lt;','<') 
, '&amp;quot;','"') 
, '&nbsp;',' ') 
, '&quot;', '"') 
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]%' 
+0

该列包含的不仅仅是段落标签。我应该详细阐述一下。它还包含很多其他文字。它只是以这些标签开始和结束。 –

+0

你想保留什么,你想从那个领域中删除什么?你能提供一个相对复杂的坏例的例子,其中有很多其他文字,以及你希望清理后如何看待该字段的例子? – zedfoxus