我正在创建一个系统,用于跟踪哪种类型的软件以及为每家公司许可的软件版本。某些软件的版本号如1.1.4或类似,带有多个小数点。
我现在尝试将其保存为varchar,因为我找不到一个会占用多个小数点的数值数据类型。并且,将其存储为varchar很好,但我需要能够搜索> = 1.1.2或< = 2.5.1,当我这样做时系统崩溃。例如,搜索> = 1.2将产生结果2.5.1,但我希望能够搜索最后一个数字以获得准确性。
是否有一些我缺少的数据类型(我对此很新)还是有其他一些简单的方法可以解决它?
答案 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”。这使查询更容易。