需求是这样的
有一件事情按周来轮回着做
所以表设计的时候设计了一个bigint
目标用7位表示一个星期的7天即(因为是10进制的原因,有如下结果)
1+2+4+8+16+32+64 全有
0+0+0+0+0+0+0全无
那么这里有一个问题,sql是怎么支持按位查询的??
希望懂的人留下解决方案,谢谢
最好能写清楚
及我如何用任意
1 2 4 8 16 32 64
查询全选的情况下命中
....
不就按位 “与”,按位 “或”,按位 “异或” 的问题么?
全有为:1|2|4|8|16|32|64 假设等于N
查询是否有: N&1=1 ,N&2=2,N&4=4,N&8=8 下同。。
移除某个值就用异或 :N^1 = M,此时你用M&1 就不等于1了。
按你的说法
我的字段是 weekdays bigint型的
参数是 @currentweekday
select * from table where weekdays&@currentweekday =@currentweekday
是这意思么????
@小眼睛老鼠:是的