【发布时间】:2011-10-15 22:41:53
【问题描述】:
我需要 MySQL 将数字存储在整数字段中并保持前导零。我不能使用 zerofill 选项,因为我当前的字段是 Bigint(16) 并且数字可以在前导零的数量上有所不同。 IE:0001 - 0005,然后可能需要存储 008 - 010。我不关心数字的唯一性(这些不被用作 ID 或任何东西),但我仍然需要将它们最好存储为 INTS。
在 PHP 中使用 CHAR/VARCHAR 然后将值类型转换为整数的问题意味着通过查询对结果进行排序会导致字母数字排序,IE: SORT BY number ASC 会产生
001
002
003
1
100
101
102
2
显然不是按数字顺序,而是按字母数字顺序,这是不想要的。
希望有一些聪明的解决方法:)
【问题讨论】:
-
整数没有有前导零。只有它们的字符串表示可以。因此,如果您“需要”前导零,则必须存储字符串表示形式。为什么不能在显示时进行这种格式化,而不是将其放入数据库中?
-
1 和 001 以及不同的值。但是作为 int 它们是相同的:应该如何对它们进行排序和比较?作为 int 还是作为 varchar?
标签: php mysql string integer varchar