2011-01-07 56 views
0

我需要一個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; 

今後我將擴展功能,包括不同的標誌,.eg 32,64,128,256等

回答

0

你不需要一個功能。 您可以直接使用bitwise operators

例如面膜吧:

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

而且我反對這個意見上比真正的小桌子其他任何東西,因爲你不能正確索引它。

+0

那麼我應該怎麼做,理想情況下,我不想爲狀態添加新表併爲每個狀態創建一個字段看起來很瘋狂。 – Jules 2011-01-07 13:35:00