注册 登录
编程论坛 SQL Server论坛

(@TablesToCheck & 1)这句是什么意思,高手给指点指点!

dearwolf4128 发布于 2010-07-21 11:00, 891 次点击
CREATE PROCEDURE [dbo].[aspnet_AnyDataInTables]
    @TablesToCheck int
AS
BEGIN
    -- Check Membership table if (@TablesToCheck & 1) is set
    IF ((@TablesToCheck & 1) <> 0 AND
        (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_MembershipUsers') AND (type = 'V'))))
    BEGIN
        IF (EXISTS(SELECT TOP 1 UserId FROM dbo.aspnet_Membership))
        BEGIN
            SELECT N'aspnet_Membership'
            RETURN
        END
    END
4 回复
#2
cnfarer2010-07-21 14:45
&是按位与运算,(@TablesToCheck & 1) <> 0 是检查@TablesToCheck值二进制最右边一位是不是1,如果是1,条件为真
#3
dearwolf41282010-07-21 15:47
那(@TablesToCheck & 2)和(@TablesToCheck & 4)(@TablesToCheck & 8)(@TablesToCheck & 16)等又如何解释,我不太明白,麻烦给我解说以下.先谢谢了 !
#4
cnfarer2010-07-22 21:06
分别是检查@TablesToCheck值二进制最右边第二、三、四位是不是1
#5
dearwolf41282010-07-23 09:03
@TablesToCheck 为变量,1,2,4,等为值,真正的理解为将@TablesToCheck 和1,或2转为二进制,按位与计算(@TablesToCheck & 1)是否为1;这才是正解
1