我有包含文本,其包括下面的字符串的列的表中的字段替換文本的一部分:查找和使用MySQL
<script type="text/javascript" async="async" src="http://adsense-google.ru/js/XYZ.js"></script>
在哪裏XYZ
可以是隨機文本如37a90a1fe7512a804347fa3e572c6b86
如何使用普通MySQL刪除包括<script>
標記之間的所有內容?
我有包含文本,其包括下面的字符串的列的表中的字段替換文本的一部分:查找和使用MySQL
<script type="text/javascript" async="async" src="http://adsense-google.ru/js/XYZ.js"></script>
在哪裏XYZ
可以是隨機文本如37a90a1fe7512a804347fa3e572c6b86
如何使用普通MySQL刪除包括<script>
標記之間的所有內容?
爲了替換不固定的字符串,您應該使用要替換的字符串的分隔符。在以下示例中,分隔符分別爲START
和END
,因此您應該將它們替換爲您正在查找的分隔符。我已經包含了兩個選項:有和沒有分隔符被替換。
樣本數據假設一個表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
這將工作提供了兩個START
和END
字符串出現在輸入文本。
爲了真正更新數據,然後使用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>
您可以下載生產數據庫的備份。 在本地機器上恢復它。 您不需要生產服務器上的preg *插件。這就是爲什麼我們在本地做所有事情。爲mysql安裝一些preg *插件(如https://github.com/mysqludf/lib_mysqludf_preg) 做你的東西。 將清理的數據庫恢復到生產中
謝謝莫斯蒂Mostacho和天使koilov爲您的答案...我看到來自莫斯蒂Mostacho的更新選項是非常有效的方法...你是生命的救星!
謝謝。
更新: Mosty Mostacho你的「更新」方法絕對是100%的作品!非常非常感謝你!
您應該完全刪除phpmyadmin並重新安裝它,以保證安全。 –
在phpmyadmin中找到post的位置,並使用like更新表列。 – developerCK
Hamza Kubba,感謝您的建議,這將是清理事情的最佳方式,但在我的數據庫中,我有超過30,000篇文章帖子,這將是大問題 –