在所有行中的最后一个斜杠后添加特定单词

时间:2018-06-10 20:28:50

标签: mysql sql

我是一个 MySQL服务器,我尝试在所有行的最后一个斜杠之后添加一个特定的单词

** table **
http://link.com/prop/datadelivery/sys/187500461.mp4
http://link.com/prop/datadelivery/sys/187500462.mp4
http://link.com/prop/datadelivery/sys/187500463.mp4
http://link.com/prop/datadelivery/sys/187500464.mp4

我需要添加" / p1 /"在最后一次斜线之后。结果应该是这样的:

** table **
http://link.com/prop/datadelivery/sys/p1/187500461.mp4
http://link.com/prop/datadelivery/sys/p1/187500462.mp4
http://link.com/prop/datadelivery/sys/p1/187500463.mp4
http://link.com/prop/datadelivery/sys/p1/187500464.mp4

我看了一下命令"替换"但我相信在这种情况下,对我来说可能不是理想的解决方案。 你能帮助我吗?感谢

2 个答案:

答案 0 :(得分:2)

你可以试试这个。在%之后添加%/sys/,否则您将无法匹配任何数据。因为这些数据包含/sys之后的数据。

update T 
set name = replace(name, '/sys/', '/sys/p1/') 
where name like '%/sys/%';

dbfiddle

答案 1 :(得分:1)

您可以使用locate()查找字符串中子字符串的位置。唯一的问题是,它返回子字符串的第一个位置。您必须处理reverse() d字符串才能获得最后一个字符串。使用substring(),您可以在最后'/'contat()之前和之后删除子字符串,包括您的附录。当然,你最后需要重新调整它。

UPDATE elbat
       SET nmuloc = reverse(concat(substring(reverse(nmuloc), 1, locate('/', reverse(nmuloc))),
                            reverse('p1'),
                            substring(reverse(nmuloc), locate('/', reverse(nmuloc)))));

db<>fiddle