2

我想使用 MySQL 查询来更改链接。

链接是这样的:

http://website.com/click.php?ad_client=blablabla&add_id=548124&more=stuffhere

如果我知道 add_id 号码,这很容易:

UPDATE table SET name = REPLACE(name, '&add_id=548124', '')

问题是我必须更改 5000 行并且我不知道 add_id 编号...那么删除&add_id= somenumber的正确 mysql replace() 代码是什么 ?

4

5 回答 5

1

用这个....

 UPDATE table 
    SET name = CONCAT(SUBSTRING(name , 1, 
                    INSTR(name ,'&add_id') - 1),SUBSTRING(name , 
                    INSTR(name , '&more'), 
                    LENGTH(name ) - INSTR(name , '&add_id')))
于 2013-04-04T09:21:08.757 回答
0

您可以通过UDF - SO Answer执行此操作,或者您可以简单地编写 PHP 代码,该代码将再次替换表中的值和更新列。

于 2013-04-04T09:04:45.853 回答
0

我将创建一个存储过程,它使用游标遍历需要更新的每一行。

在该过程中,我会找到要替换的链接,然后一一替换它们。

我制作了一个sqlfiddle来展示如何在选择中获取要替换的部分。

我认为这种方法干净且易于阅读,但可以编写此更新(很可能很难阅读)。

于 2013-04-04T09:25:01.050 回答
0
  • 首先看看它是否有效:

    选择 ' http://website.com/click.php?ad_client=blablabla&add_id=548124&more=stuffhere ' INTO @link;
    SELECT @link as full_link, SUBSTR(@link,LOCATE('&',@link),LOCATE('&',@link,LOCATE('&',@link)+1)-LOCATE('&',@ link)) 作为 remove_part, REPLACE(@link,SUBSTR(@link,LOCATE('&',@link),LOCATE('&',@link,LOCATE('&',@link)+1)-LOCATE( '&',@link)),'') 作为 final_link

现在为您的更新:

UPDATE table SET name = REPLACE(name,SUBSTR(name,LOCATE('&',name),LOCATE('&',name,LOCATE('&',name)+1)-LOCATE('&',name)),'')
于 2013-04-04T09:27:01.867 回答
0

试试这个 REPLACE

 UPDATE Table1
 SET name = REPLACE(if(name like '%add_id=%','' , name ), 

 '&add_id=' , '' )

在这里演示

于 2013-04-04T09:50:10.643 回答