在Where子句中使用位掩码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Where子句中使用位掩码相关的知识,希望对你有一定的参考价值。

  1. BEGIN
  2. DECLARE @MailDelivery INT,
  3. @EmailDelivery INT,
  4. @FaxDelivery INT,
  5. @ParamVal INT,
  6. @ZeroVal INT
  7.  
  8. SET @MailDelivery = 1 --(0001)
  9. SET @EmailDelivery = 2 --(0010)
  10. SET @FaxDelivery = 4 --(0100)
  11.  
  12. SET @ParamVal = 1
  13. SET @ZeroVal = 0
  14.  
  15. IF @ParamVal = 0
  16. SET @ZeroVal = NULL
  17.  
  18. SET @ParamVal = isnull(@ParamVal, 0)
  19.  
  20. SELECT Id,
  21. --BusinessEventDate,
  22. DeliveryFlags,
  23. (isnull(DeliveryFlags,0) & @ParamVal) AS BitMask
  24. FROM Mailsets
  25. WHERE (BusinessEventDate > '8/28/2007')
  26. --Check the appropriate bit.
  27. AND (
  28. (isnull(DeliveryFlags,0) & @ParamVal) = @ParamVal + isnull(@ZeroVal, isnull(DeliveryFlags,0))
  29. )
  30.  
  31. END
  32. GO

以上是关于在Where子句中使用位掩码的主要内容,如果未能解决你的问题,请参考以下文章

在oracle中where 子句和having子句中的区别

不使用`where`子句,但得到错误:“未知列 在where子句中“

Postgres 中的位掩码

在 where 子句中使用 CASE

在 WHERE 子句中使用 SELECT 查询

Sql where 子句