在 VARCHAR 字段中按版本号分组?
Group by version number in VARCHAR field?
在我的网站上,我有一个包含下载统计信息 的管理员页面。我想知道哪些文件下载最多。但是,每次我发布新版本(例如 1.3.0 -> 1.3.1)时,我都会在 table 上获得一条新记录,您可以在下面看到。
有没有办法使用 MySQL 将一个项目的所有版本组合在一起?
版本以不同的方式表示:
- 可以是
1.0
、1.00
或 1.0.0
- 后面有
.zip
或 .exe
或 SomeWord.zip
(例如“Source”或“Binaries”)
数据库 table 包含一个包含完整下载路径的 VARCHAR
字段。例如
[Path] is "downloads/coding/electronics/Floppy Drive Music 3.1.zip"
更新
评论 #1 建议将无版本名称存储在数据库中。我特此也接受任何解释如何使用 PHP.
从文件名中正确删除版本的答案
进一步了解和披露,请看截图:
由于不太可能使用 MySQL 或以一种漂亮的方式完成,我听从了问题评论 #1 的建议:
我使用 PHP 删除版本并使用 MySQL 按简单字符串分组。
$simpleFileName = substr($row['Path'], strrpos($row['Path'], '/') + 1); // Strip path, get file name only
if (preg_match('/\d+(?:\.\d+)+/', $simpleFileName, $matches))
{
// Replace version with "[VERSION]", which is processed in the front end.
$simpleFileName = str_replace($matches[0], '[VERSION]', $simpleFileName);
}
在我的网站上,我有一个包含下载统计信息 的管理员页面。我想知道哪些文件下载最多。但是,每次我发布新版本(例如 1.3.0 -> 1.3.1)时,我都会在 table 上获得一条新记录,您可以在下面看到。
有没有办法使用 MySQL 将一个项目的所有版本组合在一起?
版本以不同的方式表示:
- 可以是
1.0
、1.00
或1.0.0
- 后面有
.zip
或.exe
或SomeWord.zip
(例如“Source”或“Binaries”)
数据库 table 包含一个包含完整下载路径的 VARCHAR
字段。例如
[Path] is "downloads/coding/electronics/Floppy Drive Music 3.1.zip"
更新
评论 #1 建议将无版本名称存储在数据库中。我特此也接受任何解释如何使用 PHP.
从文件名中正确删除版本的答案进一步了解和披露,请看截图:
由于不太可能使用 MySQL 或以一种漂亮的方式完成,我听从了问题评论 #1 的建议:
我使用 PHP 删除版本并使用 MySQL 按简单字符串分组。
$simpleFileName = substr($row['Path'], strrpos($row['Path'], '/') + 1); // Strip path, get file name only
if (preg_match('/\d+(?:\.\d+)+/', $simpleFileName, $matches))
{
// Replace version with "[VERSION]", which is processed in the front end.
$simpleFileName = str_replace($matches[0], '[VERSION]', $simpleFileName);
}