2016-12-07 52 views
0

我有一個WordPress的MySQL數據庫,我只是有phpMyAdmin訪問MySQL數據庫。幾千個條目(wp_post中的post_content)在post_content內有一個類似下面的示例的字符串,我需要將其刪除(但不包括post_content中的其他任何內容)。刪除緊密匹配的所有項目中的字符串使用phpMyAdmin

正如你所看到的,每串略有不同,但有相似之處。我已經涉及到通配符(%和_),但似乎無法通過phpMyAdmin的查找/替換工具完全正確。

<!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ --> 
<!-- xqmbbHiYB5 --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ --> 
<!-- Po1o6IUJby --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ --> 
<!-- xqmbbHiYB5 --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ --> 

等等

+0

請告訴我們什麼ü做了..,我們將幫助您解決.. – m2j

回答

0

你可以用這樣的查詢做到這一點。它只在字符串的開始,中間和結尾測試固定字符串。它也檢查長度。

SELECT 
    val 
, REPLACE(val, SUBSTRING(val,LOCATE('<!-- ',val),60),'') after_replace 
FROM testtable 
WHERE 
    LOCATE('<!-- ',val) > 0 
AND 
    SUBSTRING(val,15+LOCATE('<!-- ',val),12) = ' --><!-- /* ' 
AND 
    SUBSTRING(val,53+LOCATE('<!-- ',val),7) = ' */ -->' 
; 


UPDATE testtable 
    set val = REPLACE(val, SUBSTRING(val,LOCATE('<!-- ',val),60),'') 
WHERE 
    LOCATE('<!-- ',val) > 0 
AND 
    SUBSTRING(val,15+LOCATE('<!-- ',val),12) = ' --><!-- /* ' 
AND 
    SUBSTRING(val,53+LOCATE('<!-- ',val),7) = ' */ -->' 
; 

樣品

測試數據

mysql> select * from testtable; 
+----+-----------------------------------------------------------------------------------------+ 
| id | val                      | 
+----+-----------------------------------------------------------------------------------------+ 
| 1 | <!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->       | 
| 2 |  asdfasefasdf<!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->asdfasdfas | 
| 3 | 12345<!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->67890     | 
+----+-----------------------------------------------------------------------------------------+ 
3 rows in set (0,00 sec) 

SELECT樣品

mysql> SELECT 
    -> val 
    -> , REPLACE(val, SUBSTRING(val,LOCATE('<!-- ',val),60),'') after_replace 
    -> FROM testtable 
    -> WHERE 
    ->  LOCATE('<!-- ',val) > 0 
    -> AND 
    ->  SUBSTRING(val,15+LOCATE('<!-- ',val),12) = ' --><!-- /* ' 
    -> AND 
    ->  SUBSTRING(val,53+LOCATE('<!-- ',val),7) = ' */ -->' 
    -> ; 
+-----------------------------------------------------------------------------------------+-----------------------------+ 
| val                      | after_replace    | 
+-----------------------------------------------------------------------------------------+-----------------------------+ 
| <!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->       |        | 
|  asdfasefasdf<!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->asdfasdfas |  asdfasefasdfasdfasdfas | 
| 12345<!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->67890     | 1234567890     | 
+-----------------------------------------------------------------------------------------+-----------------------------+ 
3 rows in set (0,00 sec) 

mysql> 

更新

mysql> UPDATE testtable 
    -> set val = REPLACE(val, SUBSTRING(val,LOCATE('<!-- ',val),60),'') 
    -> WHERE 
    ->  LOCATE('<!-- ',val) > 0 
    -> AND 
    ->  SUBSTRING(val,15+LOCATE('<!-- ',val),12) = ' --><!-- /* ' 
    -> AND 
    ->  SUBSTRING(val,53+LOCATE('<!-- ',val),7) = ' */ -->' 
    -> ; 
Query OK, 3 rows affected (0,00 sec) 
Rows matched: 3 Changed: 3 Warnings: 0 

mysql> select * from testtable; 
+----+-----------------------------+ 
| id | val       | 
+----+-----------------------------+ 
| 1 |        | 
| 2 |  asdfasefasdfasdfasdfas | 
| 3 | 1234567890     | 
+----+-----------------------------+ 
3 rows in set (0,00 sec) 

mysql> 
+0

對不起,是緩慢的(SQL是不是我的專長),但VAL你的樣品上面我的領域我想更新表中的名稱? – Mystech

相關問題