查找MySQL中包含特定字符串的所有链接并将其从所有链接中删除

问题描述:

我试图从我的数据库中的链接中删除“http://www.mydomain.com/?”,它在那里找到。 有没有简单的方法自动执行它?查找MySQL中包含特定字符串的所有链接并将其从所有链接中删除

我的链接在表wp_postmeta。 meta_key被称为_tdomf_custom_permalink,链接位于meta_value中。 正如我所说的,链接有这个结构http://www.mydomain.com/?http://www.anotherdomain.com/http://www.mydomain.com/?必须删除。

谢谢!

UPDATE wp_postmeta set _tdomf_custom_permalink = replace(_tdomf_custom_permalink, 'http://www.mydomain.com/?', '') WHERE _tdomf_custom_permalink like 'http://www.mydomain.com/?%'
+0

添加WHERE子句并开始看起来不错 – RichardTheKiwi 2011-04-07 03:29:13

+0

如果数据字段的子集包含“http://www.mydomain.com/?”,那么您可以在此查询中使用WHERE子句。与wp_postmeta中所有记录的数量成比例。如果很小,当然WHERE会提高查询性能。 WHERE子句看起来像“WHERE _tdomf_custom_permalink like'http://www.mydomain.com/?%'” – Nemoden 2011-04-07 07:04:31

+0

WHERE将包含双精度%。其原因是不做更多的变化比要求,而不是更多的搜索,因为它会扫描。更改涉及日志记录,潜在触发器,索引更新等 – RichardTheKiwi 2011-04-07 07:09:04

海兰,这是简单的

$query = "SELECT links FROM tabe_name"; 
$result = msqyl_query($query); 
while($row = mysql_fetch_assoc($result)) { 
    $id = $row['id']; 
    $replace = str_replace("http://www.mydomain.com/?","",$row['links']); 
    $query_replace = mysql_query("UPDATE table_name SET link = '$replace' WHERE id = '$id'"); 
} 

此代码是可以理解你,如果你是一个初学者,因为有很多方法可以做一个单一的SQL查询。