我想在mySQL中存储00
,01
,02
,03
,04
等数字。
哪种数据类型最适合这种情况?
答案 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主题。