最近看同事在折腾sqlite数据库,若干业务字段在sqlite数据库中是按位存储在一个表的字段里的,然后同事用了一个看起来很变态的办法,比如,先找出满足条件的该物理字段的值的集合,再用in 子句,我看来觉得这个搞法很别扭,如果数据库直接支持按位运算就好办了,查了下mssql,mysql是有的,sqlite居然也是支持的,哈哈哈哈~
参考了: http://blog.chinaunix.net/uid-12664992-id-329608.html
按位AND:&
按位OR:|
按位互斥:^
按位取反:~
eg:UPDATE [AnalogInput] SET [Object_Type]= (15 & 3)<<2;
得到的结果是12.
=================================================
SQLite 有如下二元运算符,根据其优先级从高到低有:
||
* / %
+ -
<< >> & |
< <= > >=
= == != <> IN
AND
OR
以下是支持的一元运算符:
- + ! ~ NOT