在mysql中表示n位无符号整数

时间:2011-06-23 20:56:57

标签: mysql database-schema unsigned-integer

如何在mysql中表示此数据?

16 bit unsigned integer -----Range: 0x0000 - 0xFFF7
64 bit unsigned int.  Depicted as xx:xx:xx:xx:xx:xx:xx:xx -----Range: 0x0000 - 0xFFFFFFFFFFFFFFFF
2 bits ----- 00 - None,  01 - Residential  Security,  10 - High Security
32 bit unsigned int

我应该将所有内容转换为字符串并在应用层转换它吗?

2 个答案:

答案 0 :(得分:4)

根据MySQL's Overview of Numeric Types

  • UNSIGNED SMALLINT:范围是0到65535.这对于16位无符号整数就足够了。
  • UNSIGNED TINYINT:范围是0到255.足够2位无符号整数。您似乎需要保留前导零,因此也请使用ZEROFILL。要将值保持为两个字符宽,您可以指定UNSIGNED ZEROFILL TINYINT(2)
  • UNSIGNED INT:范围是0到4294967295.足够32位无符号整数。
  • UNSIGNED BIGINT:范围是0到18446744073709551615.见下文:

最后一个,64位unsigned int,有一些警告,来自上面的链接页面:

  
      
  • 所有算术都是使用带符号的BIGINT或DOUBLE值完成的,因此除了位功能外,不应使用大于9223372036854775807(63位)的无符号大整数!如果这样做,结果中的一些最后数字可能是错误的,因为在将BIGINT值转换为DOUBLE时出现舍入错误。
  •   
  • 通过使用字符串存储,您始终可以在BIGINT列中存储精确的整数值。在这种情况下,MySQL执行字符串到数字的转换,不涉及中间双精度表示。
  •   
  • 当两个操作数都是整数值时, - ,+和*运算符使用BIGINT算法。这意味着如果乘以两个大整数(或返回整数的函数的结果),当结果大于9223372036854775807时,可能会得到意外结果。
  •   

答案 1 :(得分:1)

MySQL支持多种数据类型。见MySQL Data Types

UNSIGNED BIGINT   : 8-byte (64-bit) integer

UNSIGNED INT      : 4-byte (32-bit) integer

UNSIGNED SMALLINT : 2-byte (16-bit) integer

对于2位类型,您可以使用TINYINT (8-bit)ENUM datatype