2

我正在创建一个系统来跟踪哪种类型的软件,以及每个公司许可的软件版本。一些软件的版本号如 1.1.4 或类似的版本号多于一位小数。

我现在尝试将其保存为 varchar,因为我找不到一个小数点以上的数字数据类型。而且,将其存储为 varchar 很好,但我需要能够搜索 >= 1.1.2 或 <= 2.5.1 并且当我这样做时系统崩溃。例如,搜索 >= 1.2 将产生结果 2.5.1,但我也希望能够搜索最后一个数字以确保准确性。

是否有一些我遗漏的数据类型(我对此很陌生)或者是否有其他简单的方法来解决它?

4

3 回答 3

4

假设修订和补丁值 (in version.revision.patch) 最多有两位数,您可以将它们存储在一个INT UNSIGNED(或更小)列中,如下所示:

version * 10000 + revision * 100 + patch

使用这种方法,您的搜索将变为>= 10102 or <= 20501.

于 2013-05-29T15:08:41.530 回答
1

不是本机,不,因为多个小数点不是常见的数据类型。

您最好的选择是varchar像您所做的那样保存它,然后在您的应用程序代码中,拆分数字并手动进行比较。

于 2013-05-29T15:08:31.433 回答
0

I think your only options are

1) Use 3 separate integer fields for the version components but this makes the query a little more complex.

2) Save it as a string converted to the format xxxyyyzzz for example. i.e. 2.5.1 becomes a string "002005001". This makes the query easier.

于 2013-05-29T15:06:09.510 回答