-1

我想在 mySQL中存储00, 01, 02,03等数字。04

哪种数据类型最适合这个?

4

4 回答 4

3

用于int存储号码。

不要将渲染混淆:如果您希望数字与前导零一起显示,请在数据和用户眼睛之间的一层中处理它;不要将渲染数据一起存储。

进行格式化的层可以是任何东西,从用于选择数据的 SQL 到显示数据的网页中的 javascript,以及介于两者之间的任何东西。

于 2013-08-11T14:10:43.230 回答
1

这些看起来像代码而不是数字,这意味着您没有进行算术运算。如果它们是代码,存储它们的最佳方式是 asvarchar(2)char(2)types。

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

编辑:

区分数字字符串(包含数字的字符串)和实际数字非常重要。有许多此类字符串的示例,您肯定希望将其存储为字符串。想到的四个是电话号码,美国邮政编码,帐号(我银行的帐号以“057”开头,“0”非常非常非常重要)和(大部分)两部分版本号。

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

您的问题没有解释代码的真正含义。因此,根据它们代表的字符串或数字可能是合适的。然而,基于“0”的重要性足以提出一个问题,我绝对倾向于字符表示。

于 2013-08-11T14:06:02.973 回答
0

更好地使用数字数据类型本身。特别是smallint(2),因为它最适合您的样本。

在这里查看更多关于MySQL 中的数值类型属性的信息。

还可以使用ZEROFILL将 0 附加到您的数据中。请参阅此SO线程。

于 2013-08-11T14:18:46.320 回答
0

不久,varchar.

虽然我不知道你会对这些“数字”做什么,但如果你想在实际数字后面保留那些“0”,你应该把它们当作字符串类型。

于 2013-08-11T14:06:44.870 回答