mysql SET类型,官方手册:http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#set
应用实例如下:
有 一张表 pms_serverlist ,有一个集合类型字段 State SET('Approved','Recommend','Merged','New','Hidden','Maintaining','Updating') ,
现让该表的某条记录的State字段设置为'Merged' 和 'Hidden' ,操作如下:
UPDATE pms_serverlist SET `State`=`State` |4|16 WHERE ServerID=47
现让该表的某条记录的State字段取消设置为'Merged' 和 'Hidden' ,操作如下:
UPDATE pms_serverlist SET `State`=`State` &~4&~16 WHERE ServerID=47
说明:
上面的实现是利用位操作运算完成的,set类型,是用二进制来储存值的,共8位,每一位表示一个值,像上面情况,
第一位储存的是'Approved',
第二位储存的是'Recommend',
第二位储存的是'Merged',
第三位储存的是'New',
第四位储存的是'Hidden',
。。。
当该位为1时,表示该位的值显示出来,反之,则不显示。
所以,要是该字段'Merged'被选中设置,字段应该与“001”做“|”(或)运算,
----注意,此时的右边为最高位。
不被选中设置,则字段应该与“~001”(取反)做“&”(和)运算。