我有一个相同的问题,数据库类型为“ SET”的枚举类型。
我试图添加一个不在该列表中的值。
我尝试添加的值的十进制值为256,但枚举列表只有8个值。
1: 1 -> A
2: 2 -> B
3: 4 -> C
4: 8 -> D
5: 16 -> E
6: 32 -> F
7: 64 -> G
8: 128 -> H
因此,我只需要向该字段添加附加值即可。
阅读此文档条目有助于我理解问题。
MySQL以数字方式存储SET值,而存储值的低位对应于第一个set成员。如果在数字上下文中检索SET值,则检索到的值具有与组成列值的set成员相对应的位set。例如,您可以像这样从SET列中检索数值:
mysql> SELECT set_col+0 FROM tbl_name; If a number is stored into a
如果将数字存储到SET列中,则以该数字的二进制表示形式设置的位将确定列值中的set成员。对于指定为SET('a','b','c','d')的列,成员具有以下十进制和二进制值。
SET Member Decimal Value Binary Value
'a' 1 0001
'b' 2 0010
'c' 4 0100
'd' 8 1000
如果您为此列分配9的值,即二进制形式的1001,那么将选择第一个和第四个SET值成员'a'和'd',结果值为'a,d'。