You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何用CASE WHEN生成BOOLEAN类型结果?

如何返回BOOLEAN类型结果(针对SQL Server)

你的查询中尝试直接使用true/false作为布尔字面量时出现错误,是因为SQL Server没有原生的BOOLEAN类型,也不支持true/false作为字面量(这是PostgreSQL等数据库的特性),SQL Server用BIT类型来模拟布尔逻辑,1代表真,0代表假。

正确写法

你可以通过以下方式获取等价的布尔类型结果:

方法1:CAST条件结果为BIT类型

最直观的写法,将CASE分支的1/0转换为BIT:

CASE
    WHEN d.DischargeStatusId = 1 THEN CAST(1 AS BIT)
    WHEN dr.DischargeRequestStatusId = 1 THEN CAST(0 AS BIT)
END AS [is_discharge_status]

方法2:整体CAST为BIT

也可以先判断出数值结果,再统一转换为BIT:

CAST(
    CASE
        WHEN d.DischargeStatusId = 1 THEN 1
        WHEN dr.DischargeRequestStatusId = 1 THEN 0
    END AS BIT
) AS [is_discharge_status]

方法3:使用IIF函数(SQL Server 2012及以上版本支持)

如果你的SQL Server版本支持IIF,可以用更简洁的写法:

IIF(d.DischargeStatusId = 1, CAST(1 AS BIT), IIF(dr.DischargeRequestStatusId = 1, CAST(0 AS BIT), NULL)) AS [is_discharge_status]

补充说明

注意到你的SQL语法(例如用[]包裹标识符、错误码207)属于SQL Server特性,而非PostgreSQL。如果是在PostgreSQL中,直接写true/false的写法是完全有效的,不会出现这个错误。

内容的提问来源于stack exchange,提问作者My August

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:17:18