2011-01-07 9 views
0

ステータスコードを評価するMySQLの関数が必要です。MySQLでは、私の関数はどのように数値を評価するのですか?

私のプログラムでは、これを評価しています。しかし、SQLでは、特定のReasonを持つすべてのステータスコードを選択したいと考えています。以下の理由を見ることができ、複数の設定が可能です。

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; 

ようになり、32、64、128、256など

答えて

0
を.eg

機能は必要ありません。 あなたが直接、例えばbitwise operators

を使用して、それをマスクすることができます。これに対して

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

そして、私の助言を本当に小さなテーブル以外に、ので、あなたが適切にインデックスにそれをすることはできません。

+0

代わりに、私は代わりに、ステータス用の新しいテーブルを追加し、各ステータス用のフィールドを作成したくないと思うのが理想的です。 – Jules

+0

Re。編集...しかし、それが遅くなる場合、私は代わりに何をするのですか? – Jules

関連する問題