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”(取反)做“&”(和)运算。

 

 

posted on 2010-11-11 15:00  小炒花生米  阅读(4668)  评论(0编辑  收藏  举报