我有一个mySQL表,里面有很多像这样的链接:
id - link
1 | index.php?video=12
2 | index.php?video=345
3 | index.php?video=6789
4 | index.php?video=123&other=variable
5 | www.site.com/index.php?video=456&other=variable
每个文字行一个链接。我想在数字之前添加零,但总共需要9个数字。所以video = 12将是video = 000000012而video = 6789将是video = 000006789。
有没有办法通过使用SQL查询来实现这一点?
编辑:提交的解决方案tombom工作正常,但如果我的链接没有video = x变量怎么办?答案 0 :(得分:3)
UPDATE yourTable
SET `link` = REPLACE(`link`, SUBSTRING(`link` from LOCATE('=', `link`) + 1), RIGHT(CONCAT('000000000', SUBSTRING(`link` from LOCATE('=', `link`) + 1)), 9))
在sqlfiddle中看到它正常工作here。
<强>更新强>
如果我有更多网址变量的链接怎么办?喜欢:index.php?video = 123&amp; play = 1&amp; search = hello
这有点棘手,但是你走了:
UPDATE yourTable
SET `link` = replace(`link`, substring(`link`, locate('=', `link`) + 1, ABS(locate('&', `link`) - locate('=', `link`) - 1)), right(concat('000000000', substring(`link`, locate('=', `link`) + 1, ABS(locate('&', `link`) - locate('=', `link`) - 1))), 9))
或者你可以这样做一点:
UPDATE yourTable
SET `link` = , CONCAT(SUBSTRING_INDEX(`link`, '=', 1),'=', LPAD(SUBSTRING(`link` from locate('=', `link`) + 1),9,'0'))
请参阅sqlfiddle。
答案 1 :(得分:0)
UPDATE table1 SET `link` = CONCAT(SUBSTRING_INDEX(`link`, '=', 1),'=', LPAD(SUBSTRING_INDEX(`link`, '=', -1),9,'0'))
请参阅sqlfiddle