sql - SQL中布尔列的逻辑与
问题描述
我们如何在 select 子句中对 SQL 中的两个布尔列进行逻辑与连接?
我想到的伪SQL:
select boolean_col_A AND boolean_col_B as joint_bool from foo where id = 42
请注意,我不是通过布尔谓词来限制记录的数量,而是在结果集中创建一个“合成”即代理列。
我觉得必须有一个简单的方法来实现这一点,但我没有看到它。它应该适用于 Oracle、Postgres 和 H2。
解决方案
恕我直言,使用case
可能是一个更好的选择,因为包含了 Oracle,据我所知,Oracle 不能有布尔列,所以通常我们只使用 a varchar(1)
or char(1)
witht/f
因此,您可以考虑只在所有数据库中boolean
使用字符串列,而不是使用列,然后一个简单的(如下所示)可以与所有数据库一起使用。t/f
case
select case when colA = 't' and colB = 't' then 't' else 'f' end as joint_bool
from [TableName]
推荐阅读
- google-apps-script - 在 Google 表格上的一个或单独文件中创建用户界面菜单?
- javascript - 使用 Formidable 时,如何从 AJAX 请求发送表单数据?
- java - 在我的 Firebase 数据库中,我想更新发送者和接收者匹配特定值的节点的 isDownloaded 值
- javascript - 从 jQuery 中作为属性的函数访问数据属性
- mediawiki - 如何从命令行安装 Mediawiki 扩展?
- excel - 如何使用案例循环遍历范围
- spring-boot - 使用 mongodb 的 Spring Boot RestController 的 Junit
- django - 使用当前登录用户自动填充 ForeignKey(User)
- javascript - 如果承诺失败,抓住但做下一个
- ios - 为什么操场表现得很奇怪。下面的代码显示编译器错误,并在运行代码时显示正确的输出