Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将零添加到mySQL表行中的特定位置_Php_Mysql - Fatal编程技术网

Php 将零添加到mySQL表行中的特定位置

Php 将零添加到mySQL表行中的特定位置,php,mysql,Php,Mysql,我有一个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 UPDATE yourTable SET `link` = , CONCAT(SUBSTRIN

我有一个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
UPDATE yourTable
SET `link` = , CONCAT(SUBSTRING_INDEX(`link`, '=', 1),'=', LPAD(SUBSTRING(`link` from locate('=', `link`) + 1),9,'0'))
每个文本行一个链接。我想在数字前加上零,但总共必须是九个数字。因此,video=12将是video=000000012,video=6789将是video=000006789

有没有办法通过使用SQL查询来实现这一点

编辑:tombom提交的解决方案运行良好,但是如果我有没有video=x变量的链接怎么办

UPDATE yourTable
SET `link` = REPLACE(`link`, SUBSTRING(`link` from LOCATE('=', `link`) + 1), RIGHT(CONCAT('000000000', SUBSTRING(`link` from LOCATE('=', `link`) + 1)), 9))
看它在sqlfiddle中实时工作

更新:


如果我有一些带有更多url变量的链接怎么办?比如:index.php?video=123&play=1&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))
或者你可以做得短一点,像这样:

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
UPDATE yourTable
SET `link` = , CONCAT(SUBSTRING_INDEX(`link`, '=', 1),'=', LPAD(SUBSTRING(`link` from locate('=', `link`) + 1),9,'0'))


请参见

查看regex replace查看只存储ID号(12等)然后在输出时生成链接会更好。然后你可以用你使用的任何编程语言很容易地格式化这个,如果我有一些带有更多url变量的链接呢?比如:index.php?video=123&play=1&search=hello如果我有一些包含更多url变量的链接会怎么样?比如:index.php?video=123&play=1&search=hello@MikaelFrôding更新了我的答案。这很有效,但我发现我在那里隐藏了一些根本没有video=x变量的链接。那些链接搞砸了。我如何不将查询应用于它们?