【发布时间】:2016-05-06 08:43:19
【问题描述】:
我想知道存储这些的最佳数据类型是什么:
null0/* the length of other numbers is always 7 digits */0000000000000100000100000011/* and so on */1111111
我已经测试过,INT 也可以。但是有一个更好的数据类型。因为我所有的号码都是由0 或1 数字组成的。有没有更好的数据类型?
【问题讨论】:
-
二进制呢?例如整数字段?使一个 int 字段可以为空并存储为二进制(而不是您拥有的实际数字)并且您被排序......当然除非您确实需要它作为字符串。您可以使用非常小的数据类型,因为看起来您只需要 7 个字节
-
@Charleh “作为字符串” 是什么意思?我想通过像这样的 Trigger 使用它
IF ( SUBSTR(col, 1, 1) = 1) THEN ...和col包含该二进制数。你也可以写一个答案吗? -
“更好的数据类型”是什么意思?您需要指定您想要达到的目标,以便任何人提出更好的数据类型。
-
@stack 如果您将 010001 存储在 INT 中,您将丢失前导 0,因为 010001 相当于 10001(除非您将其存储为二进制值)。如果您想对该值执行
SUBSTR(),则需要将其存储为字符串。或者,您可以存储为字节/数字并使用位掩码在某些位位置检索 0/1。这是简单的二进制:0 = 0、10 = 2、010001 = 17。然后,您只需使用位掩码检查来查看是否设置了任何特定位...例如IF 8 & bitfield = 8 THEN ...。查看加里答案中的链接。 -
@Charleh 好的,根据您的解释,我想将其存储为字符串。因为我需要这个
01 ≠ 1。请写出答案。
标签: mysql sql sqldatatypes