mysql SET类型 应用技巧

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

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值