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

如何用SELECT语句创建计算布尔列?两列相等判断报语法错误

解决SELECT中生成布尔判断列的语法错误问题

你的问题出在直接用比较表达式作为列返回——很多SQL数据库(比如SQL Server)不支持这种写法,需要显式将比较结果转换为可返回的布尔/整数类型。

通用解决方案(适用于所有SQL方言)

使用CASE语句显式判断并返回结果:

SELECT 
    CASE 
        WHEN dol.RequestedBy = dol.RequestedFor THEN 1 
        ELSE 0 
    END AS "EQ",
    dol.*
FROM DaysOnLeave AS dol 
WHERE Status = 'Approved';

如果你的数据库原生支持布尔类型(比如PostgreSQL、MySQL 8.0+),也可以直接返回布尔值:

SELECT 
    CASE 
        WHEN dol.RequestedBy = dol.RequestedFor THEN TRUE 
        ELSE FALSE 
    END AS "EQ",
    dol.*
FROM DaysOnLeave AS dol 
WHERE Status = 'Approved';

简化写法(适用于SQL Server、Access等)

如果数据库支持IIF函数,可以用更简洁的语法:

SELECT 
    IIF(dol.RequestedBy = dol.RequestedFor, 1, 0) AS "EQ",
    dol.*
FROM DaysOnLeave AS dol 
WHERE Status = 'Approved';

为什么原语句报错?

像SQL Server这类数据库,不会把A = B这种比较表达式直接当作布尔值返回,必须通过条件语句或函数显式转换为数据库能识别的返回类型(比如整数、布尔常量)。

内容的提问来源于stack exchange,提问作者Skye TheFox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:10:04