MySQL,我的函数如何评估一个数字?

时间:2011-01-07 13:20:16

标签: mysql

我需要MySQL中的一个函数来评估状态代码......

在我的程序中,这是我评估它的方式。但是,在SQL中我想要选择具有特定原因的所有状态代码。您可以在下面看到原因,并且可以设置多个原因。

Sub InterpretReasonCode(ByVal pintCode As Integer)

    If pintCode >= 16 Then 
     pintCode -= 16 
     mbooBlacklistedDomain = True 
    End If

    If pintCode >= 8 Then 
     pintCode -= 8 
     mbooSneakedURLChanged = True 
    End If

    If pintCode >= 4 Then 
     pintCode -= 4 
     mbooRetriedFailedToAccess = True 
    End If

    If pintCode >= 2 Then 
     pintCode -= 2 
     mbooRequestedByAuthor = True 
    End If

    If pintCode >= 1 Then 
     pintCode -= 1 
     mbooBlackListed = True 
    End If

End Sub

我的SQL语句看起来像这样

Select * from MyTable where Eval_Func(StatusCode,8) = true;

将来我将扩展功能以包括不同的标志,.e.g 32,64,128,256等。

1 个答案:

答案 0 :(得分:0)

您不需要功能。 您可以使用bitwise operators

直接屏蔽它

例如:

-- Get all BlacklistedDomain
select * 
  from tab 
 where reason_bit_mask & 16;

除了非常小的表之外,我建议不要这样做,因为你无法正确索引它。