一种方法是进行以下查询:
SELECT * FROM table_of_versions ORDER BY
INET_ATON(
SUBSTRING_INDEX(
CONCAT(
SUBSTRING_INDEX(
SUBSTRING_INDEX(version, '+', 1), '-', 1),'.0.0.0')
,'.',4)
),
IF(
LENGTH(version) = LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(version, '+', 1), '-', 2), '-', -1)),
"~", SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(version, '+', 1), '-', 2), '-', -1)
) DESC,
SUBSTRING_INDEX(
SUBSTRING_INDEX(version, '+', 2), '+', -1);
但它不适用于构建部分。
在 SQL 中正确排序语义版本的更高级解决方案,因此条件 1.0.0-alpha < 1.0.0 & 1.0.0-1 < 1.0.0 完美运行,需要向您的数据库添加额外的列。
如果您需要此类解决方案,请随时在此处了解:
https://github.com/kotsky/semver-sort-py-sql