Apr17th
sqlite中的按位与和按位或功能
后台与开发
0
越来越喜欢用SQLITE了,免费,小巧,跨平台,高性能,对于一般应用已经足够了,不用去搭建数据库服务器平台,现在我做的小型方案一般都用SQLITE了。
今天开发一个产品的查询功能,其中有十多项可选的,每个产品都可以有其中的一项或几项,开始数据库设计也不是很合理,把每项都用一个字段表示,结果杯具了十多个字段,有的要and 有的要 or ,要把这些组合给搞出来,没有个三五百行代码(甚至更多)估计不行。
只能改数据库了,想到以前做权限的时候,可以用位运算来做,这个一个字段就可以搞定所有的事了,但那时用的是SQL SERVER,有bitand这个函数,实现容易,在SQLITE试了一下,没有这个函数,再去百度和GOOGLE,也没有发现相关内容。难道sqlite就不支持?不死心,用select 1 & 3 查询了一下,得出了结果,居然就这么简单,有点不信,再用select 1 | 3 还是正确的。
确定sqlite支持按位或和按位与以后,事情就简单了,把那十多个字段整成了三个,主要是为了直观和以后的扩展,不然一个就可以了。然后查询的时候用个select fields from table where (field & e)>0就可以了,太容易了,十多个条件也只要二十行代码就可以了。
本文出自:sonic.hu,地址:http://www.huxu.net.cn/2011_04/168.html,转载须注明!
