MySQL SET 数据类型

标签 mysql set

我尝试在数据库表中创建一个具有 SET 数据类型的列,以以下格式存储数据:10,2,44,如下所示:SET('A', 'B', 'C').

当我尝试插入数据时,我收到以下响应:

Error Code: 1265. Data truncated for column 'setcol' at row 1

这是我的查询:

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 字段中的值以按位方式数字存储。因此,集合定义中的每个值都对应于二进制数中的开/关位。

因此你的陈述将是:

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.

enter image description here

因此,由于 A 的值为 1B 的值为 2,因此将它们加在一起你会得到3。或者要设置 CD,您可以存储 12 等。

因此,将数字作为 SET 字段的成员(正如您暗示的那样)是不明智的,因为存储 '5' 具有完全不同的方式意义比存储5

关于MySQL SET 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28542379/

相关文章:

php - 更改日期的顺序以在上方显示最新的,在下方显示最早的

mysql - 如何检查表是否包含特定数量的行?

Python 与元组集的关系

java - 在 JAVA 中设置工作不正确

sorting - 使用集合中的哈希对redis中的集合进行排序

mysql - Nlog 与 Pomelo.EntityFrameworkCore.MySql

mysql - SQL UPDATE 语句基于另一个现有行更新列

c# - 从 mysql 查询中获取正确的顺序或结果

html - 在 mongodb 中更新深度嵌套的数组

mysql - 从一行中的多个表更新变量