2016-12-07 70 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

相关问题