SQL-位和布尔值字段的所有结果



我有一个看起来像这样的表(只是一个布尔字段):

| IsTrue      |
---------------
| 1           |
---------------
| 1           |
---------------
| 0           |
---------------
| 1           |
---------------

有什么方法可以在该字段中的所有值上进行刻度,以便我有一个true/false结果?

类似: select BITWISE_AND(IsTrue) from MyTable的结果|0 |?

如果仅具有0或1的值,则"位和"等效于 min()

select min(IsTrue) as "bitwise_and"

和"位或"等效于max()

select max(IsTrue) as "bitwise_or"

这是一个数字事实,因此它与所使用的数据库无关。

可能是最通用的解决方案,如果我可以在上面显示的列中列出列包含 10的面值,则是 min(IsTrue)

但有几个警告:

您正在要求使用"位" AND,但是您描述 a"逻辑" AND-如果列保存数字,则该列是" 1 = true或0 = false",是一样的;但是在其他情况下,可能只是相同的。

有些数据库提供位运算符,而另一些数据库则不提供。而且位汇总函数完全是另外一回事。这就是为什么min是一个更通用的解决方案。这是任何数据库提供的标准功能。它将在各种情况下工作,包括您似乎正在概述的情况。如果列类型在技术上是您的DBMS无法定义min(或以某种怪异的方式定义),则将失败。如果a 负数数字可以解释为" true"(但是在这种情况下,也许您可以使用min(abs(isTrue))或类似的东西)。

最新更新