2013-10-15 26 views
3

我有包含文本,其包括下面的字符串的列的表中的字段替換文本的一部分:查找和使用MySQL

<script type="text/javascript" async="async" src="http://adsense-google.ru/js/XYZ.js"></script> 

在哪裏XYZ可以是隨機文本如37a90a1fe7512a804347fa3e572c6b86

如何使用普通MySQL刪除包括<script>標記之間的所有內容?

+0

您應該完全刪除phpmyadmin並重新安裝它,以保證安全。 –

+0

在phpmyadmin中找到post的位置,並使用like更新表列。 – developerCK

+0

Hamza Kubba,感謝您的建議,這將是清理事情的最佳方式,但在我的數據庫中,我有超過30,000篇文章帖子,這將是大問題 –

回答

4

爲了替換不固定的字符串,您應該使用要替換的字符串的分隔符。在以下示例中,分隔符分別爲STARTEND,因此您應該將它們替換爲您正在查找的分隔符。我已經包含了兩個選項:有和沒有分隔符被替換。

樣本數據假設一個表t與列col

|    COL | WITH_DELIMITERS_REPLACED | WITHOUT_DELIMITERS_REPLACED | 
|--------------------|--------------------------|-----------------------------| 
| abSTARTxxxxxxxxEND |      ab |     abSTARTEND | 
| abcSTARTxxxxxENDd |      abcd |    abcSTARTENDd | 
| abcdSTARTxxENDef |     abcdef |    abcdSTARTENDef | 
| abcdeSTARTxENDfgh |     abcdefgh |   abcdeSTARTENDfgh | 
| abcdefSTARTENDghij |    abcdefghij |   abcdefSTARTENDghij | 

這是創建從col柱先前輸出的查詢。當然,只使用您需要的部分查詢(帶或不帶分隔符)。

SELECT col, 
    INSERT(col, 
    LOCATE(@start, col), 
    LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col), 
    '') with_delimiters_replaced, 
    INSERT(col, 
    LOCATE(@start, col) + CHAR_LENGTH(@start), 
    LOCATE(@end, col) - LOCATE(@start, col) - CHAR_LENGTH(@start), 
    '') without_delimiters_replaced 
FROM t, (SELECT @start := 'START', @end := 'END') init 

這將工作提供了兩個STARTEND字符串出現在輸入文本。

爲了真正更新數據,然後使用UPDATE命令(使用您實際需要查詢的版本,在這種情況下,一個帶分隔符替換):

UPDATE t, (SELECT @start := 'START', @end := 'END') init 
SET col = INSERT(col, 
    LOCATE(@start, col), 
    LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col), 
    '') 

你的具體情況更換START有:

<script type="text/javascript" async="async" src="http://adsense-google.ru/js/ 

END有:

.js"></script> 
+1

這是完美的解決方案......你是我的英雄!謝謝! –

+0

歡迎!很高興知道我沒有徒勞地沸騰我的腦子:) –

+1

這是不可思議的A ++++ – Thomas

0

您可以下載生產數據庫的備份。 在本地機器上恢復它。 您不需要生產服務器上的preg *插件。這就是爲什麼我們在本地做所有事情。爲mysql安裝一些preg *插件(如https://github.com/mysqludf/lib_mysqludf_preg) 做你的東西。 將清理的數據庫恢復到生產中

1

謝謝莫斯蒂Mostacho和天使koilov爲您的答案...我看到來自莫斯蒂Mostacho的更新選項是非常有效的方法...你是生命的救星!

謝謝。

更新: Mosty Mostacho你的「更新」方法絕對是100%的作品!非常非常感謝你!