在MySql中使用带有多个小数点(例如1.4.4)的数字,是否可能?

时间:2013-05-29 15:01:13

标签: mysql sql decimal

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

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

是否有一些我缺少的数据类型(我对此很新)还是有其他一些简单的方法可以解决它?

3 个答案:

答案 0 :(得分:4)

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

version * 10000 + revision * 100 + patch

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

答案 1 :(得分:1)

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

您最好的选择是将其保存为varchar,就像您已经完成的那样,然后在您的应用代码中,分割数字并手动进行比较。

答案 2 :(得分:0)

我认为你唯一的选择是

1)为版本组件使用3个单独的整数字段,但这会使查询更复杂。

2)将其保存为转换为xxxyyyzzz格式的字符串。即2.5.1成为字符串“002005001”。这使查询更容易。