首页 > 解决方案 > SQL中布尔列的逻辑与

问题描述

我们如何在 select 子句中对 SQL 中的两个布尔列进行逻辑与连接?

我想到的伪SQL:

select boolean_col_A AND boolean_col_B as joint_bool from foo where id = 42

请注意,我不是通过布尔谓词来限制记录的数量,而是在结果集中创建一个“合成”即代理列。

我觉得必须有一个简单的方法来实现这一点,但我没有看到它。它应该适用于 Oracle、Postgres 和 H2。

标签: sql

解决方案


恕我直言,使用case可能是一个更好的选择,因为包含了 Oracle,据我所知,Oracle 不能有布尔列,所以通常我们只使用 a varchar(1)or char(1)witht/f

因此,您可以考虑只在所有数据库中boolean使用字符串列,而不是使用列,然后一个简单的(如下所示)可以与所有数据库一起使用。t/fcase

select case when colA = 't' and colB = 't' then 't' else 'f' end as joint_bool 
from [TableName]

推荐阅读