用于存储构建版本的SQL数据类型

问题描述:

我应该使用哪种数据类型来存储SQL列产品版本例如:用于存储构建版本的SQL数据类型

Version 
0.1 
0.1.1 
0.2 
1.1 
1.1.647 
2.0 
..... 

在查询我应该能够根据版本号对它们进行排序,我想要一个最佳查询来找到最高数字。

由于

我会考虑存储在一个单独的TINYINT/SMALLINT场数的每个部分。

或许有三个或四个数字字段版本表:

Major, Minor, Revision, Build 

在独立的数字存储领域是一个好主意。当单个字段中存储为字符串时,将在其中一个部分达到1000时断开排序。例如,1.2.900会出现在之前(或显示为比1.2.1000更早),当它出现在后面时。

一个很好的解决办法是使用一个整数建立的值来存储像这样:

MAJOR * 10000 + MINOR * 100 + Revision 

假设每一个范围可以从0..99。如果你想要去0..999使用

MAJOR * 1000000 + MINOR * 1000 + Revision 

这将正确排序,很容易查询,紧凑(1 INT列),很容易分解,甚至可以直观地分解。