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

如何在Snowflake中使用SQL对版本字符串进行排序?

在Snowflake中对版本号字符串进行数值排序的方法

直接对版本号字符串做普通排序会不符合数值逻辑(比如5.1.87会排在5.1.357之前,因为字符串逐字符匹配时8大于3),以下两种方法可以实现正确的数值排序:

方法1:拆分版本段并转换为数值排序

通过SPLIT_PART将版本号按.拆分为主版本、次版本、修订号,分别转为数值类型后排序:

WITH version_data AS (
    SELECT column1 AS version FROM VALUES
    ('5.14.0'),
    ('5.10.1'),
    ('5.1.8'),
    ('5.1.87'),
    ('5.1.357'),
    ('26.3.0'),
    ('24.1.1')
)
SELECT version
FROM version_data
ORDER BY
    TO_NUMBER(SPLIT_PART(version, '.', 1)) ASC,
    TO_NUMBER(SPLIT_PART(version, '.', 2)) ASC,
    TO_NUMBER(SPLIT_PART(version, '.', 3)) ASC;

方法2:使用PARSE_VERSION函数(推荐)

Snowflake提供了专门处理版本号的PARSE_VERSION函数,它会将版本字符串解析为可按数值逻辑比较的版本对象,排序更简洁准确:

WITH version_data AS (
    SELECT column1 AS version FROM VALUES
    ('5.14.0'),
    ('5.10.1'),
    ('5.1.8'),
    ('5.1.87'),
    ('5.1.357'),
    ('26.3.0'),
    ('24.1.1')
)
SELECT version
FROM version_data
ORDER BY PARSE_VERSION(version) ASC;

正确排序结果

执行上述任意方法后,得到的数值排序结果为:

  • 5.1.8
  • 5.1.87
  • 5.1.357
  • 5.10.1
  • 5.14.0
  • 24.1.1
  • 26.3.0

内容的提问来源于stack exchange,提问作者Felipe Hoffa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:12:03