MySql数据类型,它是以逗号分隔方式存储整数的整数

时间:2013-08-31 12:29:08

标签: mysql

我可以使用什么数据类型来存储1,2,3,4,5之类的值。我希望它们保持整数而不是字符串。我知道我可以使用varchar() or enum() or set(),但这些都是字符串。我正在使用MySQL版本5.5.25。存储的值也不固定。它可以是11,2,3

3 个答案:

答案 0 :(得分:2)

正确的数据类型是表格。你可以每行存储一个值。

通常,这将是一个关联表,因为值组将被分配给某个实体。类似的东西:

create table EntityNumbers (
    EntityNumberId int auto_increment primary key,
    EntityId int references Entities(EntityId),
    Number int
);

然后,如果要返回列表,请使用group_concat()

select EntityId, group_concat(Number)
from EntityNumbers
group by EntityId;

答案 1 :(得分:1)

MySql没有这样的数据类型。可用于在单个字段中存储多个值的唯一数据类型是Set数据类型,它只存储字符串。

在关系数据库中,此问题的常见解决方案是附加表,其中包含原始表的外键,原始表中的每一行可能有多行。

所以而不是

id | name | values
1  | foo  | 7,8,9

你会有

id | name 
1  | foo  

id | foreign_key | value
1  |  1          | 7
2  |  1          | 8
3  |  1          | 9

并使用

选择它们
SELECT value from original_table join additional_table ON (id == foreign_key)
  WHERE original_table.id == 1

导致3个结果行。

答案 2 :(得分:0)

tinyint()  stores 1 byte 
smallint() stores 2 bytes
mediumint() stores 3 bytes
int() stores 4 bytes