MySql 设置数据类型

MySql SET datatye

我尝试在我的数据库中创建列 table ,并设置数据类型以将数据存储在这个格式“10,2,44”中 我创建了这样的 SET 列 SET('A' , 'B' , 'C')

但是当我尝试向其中插入数据时,我得到了这个响应

错误代码: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'。这是因为 SET 字段中的值是以按位方式存储的。因此,集合定义中的每个值对应于二进制数中的 on/off 位。

因此您的陈述将是:

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

例如,来自 MySQL Documentation:

For a column specified as SET('a','b','c','d'), the members have the following decimal and binary values.

因此,由于 A 的值为 1,而 B 的值为 2,将它们相加得到 3。或者要设置 CD,您将存储 12,等等

出于这个原因,不建议将数字作为 SET 字段的成员(正如您暗示的那样),因为存储 '5' 与存储 [=24] 具有完全不同的含义=].