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

nin*_*nin 11 mysql sql database database-design

我应该使用什么数据类型来存储产品版本的SQL列,例如.

Version
0.1
0.1.1
0.2
1.1
1.1.647
2.0
.....
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Mch*_*chl 12

我会考虑将数字的每个部分存储在单独的TINYINT/SMALLINT字段中.


Ode*_*ded 9

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

Major, Minor, Revision, Build
Run Code Online (Sandbox Code Playgroud)


Stu*_*lch 5

存储在单独的数字字段中是一个好主意。当其中一个部分达到 1000 时,将其作为字符串存储在单个字段中会中断排序。例如,1.2.999 将出现在 1.2.1000 之前(或显示为更新于),而它应该出现在 1.2.1000 之后。


小智 5

一个好的解决方案是使用一个整数来构建要存储的值,如下所示:

MAJOR * 10000 + MINOR * 100 + Revision
Run Code Online (Sandbox Code Playgroud)

假设每个范围可以是0..99。如果您想转到0..999,请使用

MAJOR * 1000000 + MINOR * 1000 + Revision
Run Code Online (Sandbox Code Playgroud)

这将正确排序,易于查询,结构紧凑(1 int列),易于分解,甚至可以在视觉上分解。