我需要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等。
答案 0 :(得分:0)
您不需要功能。 您可以使用bitwise operators
直接屏蔽它例如:
-- Get all BlacklistedDomain
select *
from tab
where reason_bit_mask & 16;
除了非常小的表之外,我建议不要这样做,因为你无法正确索引它。