如何使用t-sql操作由点分隔的数字的字符串列

时间:2017-12-07 18:24:15

标签: sql sql-server tsql

我有一个代表软件版本的nvarchar(255)类型的列 数:

  VersionNumber
 ---------------

    1.0.0.505
    1.0.0.506
    1.0.0.507
    1.0.0.508
    1.0.0.509
    1.0.1.2

我需要提取最大版本号(上例中的最小版本号是1.0.0.505,最大版本号是1.0.1.2,值从最小到最高排列)

为了准确解释我需要什么 - 如果我可以使用命令式编程语言我想我会做那样的事情来检测最大版本号:

  • 让我们说版本号是d.c.b.a。
  • 我会将每个版本号分成四个不同的变量:a b c d
  • 我将对每个系列进行总结。
  • a将由数十
  • 求和
  • b将与数百个
  • 相加
  • c将汇总数千
  • d将由milions总结

比每个Max的最大总和(a + b + c + d)将是最大版本 但是在sql中实现类似功能的技术是什么?

2 个答案:

答案 0 :(得分:1)

面向未来的读者:基于@AlexK。链接是解决方案:

select TOP 1 VersionNumber from Users order by (cast('/' + replace(VersionNumber , '.', '/') + '/' as hierarchyid)) DESC;

答案 1 :(得分:0)

试试这个

select max(replace(version,'.','')) from yourtable