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

SQL CASE语句报错:invalid input syntax for type boolean: 'DRAFT' 求合并写法

PostgreSQL CASE 语句简洁写法方案

报错原因

你原来的CASE写法错误在于使用了简单CASE表达式(CASE coe_status这种形式),这种写法的WHEN子句只能指定单个匹配值,不能用AND连接多个字符串值。PostgreSQL会尝试把'DRAFT'转为布尔类型来执行逻辑运算,这就触发了invalid input syntax for type boolean的报错。

简洁合并分支的写法

推荐两种更简洁的实现方式:

方式1:使用搜索CASE表达式 + IN 运算符

这是最直观且常用的写法,直接通过IN匹配多个目标值:

CASE
    WHEN coe_status = 'PUBLISHED' THEN 'Published'
    WHEN coe_status IN ('DRAFT', 'REVIEW') THEN 'Open'
    ELSE 'No-Coes'
END

方式2:使用简单CASE表达式 + ANY(ARRAY[])

如果偏好保留CASE coe_status的写法,可以借助PostgreSQL的数组特性:

CASE coe_status
    WHEN 'PUBLISHED' THEN 'Published'
    WHEN ANY(ARRAY['DRAFT', 'REVIEW']) THEN 'Open'
    ELSE 'No-Coes'
END

这两种写法都能实现将'DRAFT'和'REVIEW'合并为一个分支返回'Open',比分开写两个WHEN更简洁,也避免了重复代码。

内容的提问来源于stack exchange,提问作者Zubair Amjad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:07:36