首页 > 解决方案 > 这个 SQL 语句背后的含义是什么?ISNULL(状态,0)& 128 = 0?

问题描述

我的应用程序中的一些存储过程,使用WHERE如下条件:

ISNULL(Status,0) & 128 = 0

它究竟是什么意思或它是如何比较的?我了解isnull条件,但单&操作员的目的是什么,想知道。任何人都可以建议我吗?

标签: sqlsql-serversql-server-2008sql-server-2008-r2

解决方案


以下条件:

ISNULL(Status,0) & 128 = 0

评估Status(=128) 的第 8 位是否设置。

使用&运算符按位AND计算两个值是否共享相同的位。

在上述情况下,您可以将其分解为:

  • 如果是,则使用Status或 0的值StatusNULL
  • 按位AND将此值与 128
  • AND如果按位返回,则返回 true 0(因此未设置该位)

顺便说一句,如果设置了位 on Status,这将返回128而不是0.


推荐阅读