2015-10-19 46 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