MySQL删除第三个/

时间:2015-11-04 16:54:35

标签: mysql

我正在尝试删除列中第三个/之前的所有内容。例如:如果coloumn中有URL,例如

http://www.example.com/example1/example2?=testest123

我想删除所有内容(不包括thrid斜杠),所以我会留下这样的东西

/例1 /示例2?= testest123

我尝试过使用它,但它只删除了第一个“/”中的所有内容,我无法弄清楚如何将其计数到第三个然后删除。

update table 
       set column2 = substring(column1, instr(column1, '/') + 1);

感谢。

2 个答案:

答案 0 :(得分:1)

首先,您可以使用SUBSTRING_INDEX函数来获取字符串的字符,直到第三个(或示例中为第四个斜杠),如下所示:

SELECT SUBSTRING_INDEX(val, '/', 4)
FROM myTable;

您可以使用REPLACE()函数删除该子字符串,方法是将其替换为空字符串,如下所示:

SELECT REPLACE(val, SUBSTRING_INDEX(val, '/', 4), '')
FROM myTable;

现在,要更新您的表,只需重写查询以将值设置为上面的值:

UPDATE myTable
SET val = REPLACE(val, SUBSTRING_INDEX(val, '/', 4), '');

注意如果正斜杠少于四次,SUBSTRING_INDEX将返回整个字符串,因此完全用空值替换整个字符串,因此您应该在执行此更新时非常小心。

这是一个带有示例文本的SQL Fiddle示例,以及我用较少的斜杠编写的示例,以演示最后一点。

答案 1 :(得分:0)

这有点乱,但你可以试试这个:

UPDATE table 
SET column2 = SUBSTRING(column1, 
                        LOCATE('/', column1, 
                            LOCATE('/', column1,                        
                                LOCATE('/', column1))+1)+1)