在mySQL中存储01,02,03等的最佳数据类型是什么?

时间:2013-08-11 14:01:37

标签: mysql sql sqldatatypes

我想在mySQL中存储0001020304等数字。

哪种数据类型最适合这种情况?

4 个答案:

答案 0 :(得分:3)

使用int存储号码。

不要将呈现混淆:如果您希望数字 dusplayed 具有前导零,请在两者之间的层中处理数据和用户的眼睛;不要使用数据存储渲染

执行格式化的图层可以是从用于选择数据的SQL到显示它的网页中的javascript以及介于两者之间的任何内容。

答案 1 :(得分:1)

这些看起来像代码而不是数字,这意味着你进行算术运算。如果它们是代码,则存储它们的最佳方式是varchar(2)char(2)类型。

如果将它们视为数字(即进行任何算术运算),则应将它们存储为整数(小整数)并在输出上附加前导零。

编辑:

区分数字串 - 包含数字的字符串 - 和实际数字非常重要。有许多这样的字符串的例子,你肯定想存储为字符串。我想到的四个是电话号码,美国邮政编码,帐号(我银行的帐号开头为“057”,“0”真的非常非常重要),(大部分)两部分版本号。

这些与实际数字不同,因为你不对它们做数字化的事情。也就是说,你永远不会把它们加在一起。或者增加它们。或者将值增加10%。您可以对它们进行排序,搜索特定值(甚至值的范围),然后加入值。这些是字符串操作以及数字操作。

你的问题没有解释代码到底是什么。因此,根据它们代表的字符串或数字可能是合适的。然而,基于“0”足以提出问题的事实,我绝对倾向于角色表示。

答案 2 :(得分:0)

很快,varchar

虽然我不知道你会对这些“数字”做什么,但如果你想保留实际数字后面的'0',你应该将它们视为字符串类型。

答案 3 :(得分:0)

最好使用数值数据类型。特别是 smallint(2) ,因为它最适合您的样品。

请点击此处了解有关Numeric Type Attributes in MySQL的更多信息。

还可以使用 ZEROFILL 在您的数据中附加0。请参阅此SO主题。