MySql集数据类型

MySql集数据类型,mysql,set,Mysql,Set,我试着在我的数据库表中创建一个列,用set data type在这个fomat 10,2,44中存储数据,我创建了一个类似set'A',B',C'的set列 但当我尝试在其中插入数据时,我得到了这样的响应 错误代码:1265。第1行“setcol”列的数据被截断 这是我的问题 INSERT INTO `voting`.`questionnaires` (`name`, `cat_id`, `init_date`, `end_date`, `setcol`) VALUES ('sad', '2',

我试着在我的数据库表中创建一个列,用set data type在这个fomat 10,2,44中存储数据,我创建了一个类似set'A',B',C'的set列

但当我尝试在其中插入数据时,我得到了这样的响应

错误代码:1265。第1行“setcol”列的数据被截断

这是我的问题

INSERT INTO `voting`.`questionnaires` (`name`, `cat_id`, `init_date`, `end_date`, `setcol`) VALUES ('sad', '2', '2008-02-02', '2008-02-02', 'A, B');

我应该使用特定的格式吗?set接受重复吗

要设置所需的值,您需要存储一个不带引号的3,而不是“a,B”。这是因为集合字段中的值是按位方式以数字形式存储的。因此,集合定义中的每个值对应于二进制数中的开/关位

因此,你的声明是:

INSERT INTO `voting`.`questionnaires` (`name`, `cat_id`, `init_date`, `end_date`, `setcol`) VALUES ('sad', '2', '2008-02-02', '2008-02-02', 3);
例如,从:

对于指定为集合“a”、“b”、“c”、“d”的列,成员具有 以下是十进制和二进制值。 既然A的值是1,B的值是2,把它们加在一起就得到了3。或者设置C和D,你可以存储12,等等


因此,将数字作为集合字段的成员是不明智的,因为存储“5”与存储“5”的含义完全不同。

如果去掉空格:a,B而不是a,B,会发生什么?您找到答案了吗?