我正在尝试删除列中第三个/之前的所有内容。例如:如果coloumn中有URL,例如
http://www.example.com/example1/example2?=testest123
我想删除所有内容(不包括thrid斜杠),所以我会留下这样的东西
/例1 /示例2?= testest123
我尝试过使用它,但它只删除了第一个“/”中的所有内容,我无法弄清楚如何将其计数到第三个然后删除。
update table
set column2 = substring(column1, instr(column1, '/') + 1);
感谢。
答案 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)