如何为一行插入和更新多个枚举值?

Val*_*lky 4 mysql sql enums

当我阅读这个答案时,我想是否可以插入和更新ENUM一行的多个“检查”值,使用MySQL.

实体示例:

TABLE
id INT auto_increment
day_list ENUM ('1','2','3,'4','5,'6','7')
gender ENUM ('m','f')
Run Code Online (Sandbox Code Playgroud)

我尝试了以下操作(以指定检查周末和两个性别):

INSERT INTO TABLE (day_list,gender) VALUE ('{6,7}','{m,f}')
Run Code Online (Sandbox Code Playgroud)

它不返回任何错误,并正确插入记录,但 day_list 和性别字段为空。

所以,它似乎不适用于 mySQL。而且在 phpMyAdmin (3.2.0) 中似乎不可能,因为值是通过单选按钮(而不是复选框)检查的。

关于如何使它工作的任何想法?或者另一种解决方案来记录和选择那些没有LIKE请求且没有关联实体(如 TABLE_DAYS 和 TABLE_GENDER)的检查天数?

Val*_*lky 6

在 MySQL 中,一个ENUM类型字段只能接受一个值。

在 phpMyAdmin 中进行了一些搜索后,似乎一种SET类型可以完成这项工作。

所以实体:

TABLE
id INT auto_increment
day_list SET ('1','2','3,'4','5,'6','7')
gender SET ('m','f')
Run Code Online (Sandbox Code Playgroud)

如何插入:

INSERT INTO TABLE (day_list,gender) VALUE ('6,7','m,f')
Run Code Online (Sandbox Code Playgroud)

关于搜索值:

  • 如果值为整数:IN如果数据是有序的,则可以工作。
  • 如果值不是整数 :FIND_IN_SET是必需的,并且不需要对搜索数据进行排序。

限制:SET类型只接受 64 个成员,更多的将需要一个外国协会实体。