You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB中对varchar类型版本号进行自然排序?

MariaDB中按自然顺序排序版本号字段的方法

你的version_id字段是字符串类型,直接用普通ORDER BY会因为字符串比较逻辑导致排序不符合数字自然顺序。以下两种方法可以实现你需要的排序效果:

方法1:拆分版本号并转换为数字排序

通过SUBSTRING_INDEX函数拆分版本号的各个部分,转换为无符号整数后排序,适配所有MariaDB版本:

SELECT version_id
FROM a
ORDER BY 
    CAST(SUBSTRING_INDEX(version_id, '.', 1) AS UNSIGNED),
    CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(version_id, '.', 2), '.', -1) AS UNSIGNED);

这个语句先提取版本号的第一部分(比如10)转成数字,再提取第二部分(比如1、10)转成数字,按这两个数字的大小排序,就能得到你要的自然顺序。

方法2:使用MariaDB内置的版本排序函数(推荐)

如果你的MariaDB版本是10.3及以上,可以直接用VERSION_SORT函数,它专门处理版本号的自然排序:

SELECT version_id
FROM a
ORDER BY VERSION_SORT(version_id);

这个函数会自动识别版本号的分段数字逻辑,无需手动拆分,代码更简洁。

内容的提问来源于stack exchange,提问作者Afnil Dwi Oktanto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:14:53