请教T-SQL中WHERE子句里按位与操作的含义
解释T-SQL语句中WHERE子句的作用
这条语句里的&是T-SQL的按位与运算符,它会对两个整数的二进制位做逐位对比:只有当两个数对应位置的二进制位都是1时,结果的该位才会是1,其余情况为0。
先把513转成二进制看:513 = 2⁰ + 2⁹,对应的二进制是1000000001——也就是说,这个数只有第0位和第9位(位从0开始计数)是1,其他位都是0。
所以dbo.vw_EnrollSchedule.AdEnrollRegistrationStatus & 513 != 0这个条件,本质是筛选出AdEnrollRegistrationStatus列的二进制值里,第0位或者第9位至少有一个是1的记录。
这种用法一般是把AdEnrollRegistrationStatus作为位掩码字段来用的:每一位对应一个独立的状态标识(比如第0位代表“已完成报名”,第9位代表“已审核通过”),通过按位与操作就能快速判断某个或某几个状态是否被启用。
内容的提问来源于stack exchange,提问作者NCC1701CAPT
相关产品推荐
相关产品推荐

