我应该使用什么MySQL列类型来存储13位数的整数?

时间:2016-05-26 20:25:48

标签: mysql database

我需要存储长度为13的整数,但我不希望出现任何复杂情况。

需要考虑的事项:

  • 是可索引的,可排序的(就像普通的Int列一样)
  • 不应该有任何特殊的“填充”。我听说BigInt有时会在数字左边填零。我不想在每次查询数据库时手动修剪零。

这可能听起来很愚蠢 - 但基本上,我只想要一个可以容纳13位数的整数列。

我应该使用哪种列类型?

2 个答案:

答案 0 :(得分:2)

使用bigint

http://dev.mysql.com/doc/refman/5.7/en/integer-types.html

Type      | Storage | Minimum Value        | Maximum Value
          | (Bytes) | (Signed/Unsigned)    | (Signed/Unsigned)
----------+---------+----------------------+----------------------
TINYINT   | 1       | -128                 | 127
          |         | 0                    | 255
----------+---------+----------------------+----------------------
SMALLINT  | 2       | -32768               | 32767
          |         | 0                    | 65535
----------+---------+----------------------+----------------------
MEDIUMINT | 3       | -8388608             | 8388607
          |         | 0                    | 16777215
----------+---------+----------------------+----------------------
INT       | 4       | -2147483648          | 2147483647
          |         | 0                    | 4294967295
----------+---------+----------------------+----------------------
BIGINT    | 8       | -9223372036854775808 | 9223372036854775807
          |         | 0                    | 18446744073709551615

答案 1 :(得分:0)

您似乎正在搜索decimal

在您的特定情况下,为十进制(13,0)。

小数存储在压缩二进制中,语义(排序)是整数。它们通常比某些情况下的“浮动”更好,因为你没有存储基数2尾数和指数,而是十进制(基数10)“整数部分”和“小数部分”,所以你不会得到典型的奇怪舍入漂浮。但这不是你的问题,只是说。