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

如何在SQL中计算列逻辑表达式,返回布尔类型的查询结果

解决方案

你原来的写法报错是因为不同SQL方言对直接返回布尔比较表达式的支持存在差异,以下是兼容所有主流关系型数据库的通用写法:

SELECT 
    ACCOUNT_NUMBER,
    CASE WHEN CREDIT = DEBIT THEN TRUE ELSE FALSE END AS "BALANCED"
FROM ACCOUNTS;

不同数据库的可选简化写法

  • PostgreSQL、MySQL 8.0+、SQLite等支持直接返回布尔表达式的数据库,也可以用下面的简化写法,用括号包裹表达式可避免语法歧义:
SELECT 
    ACCOUNT_NUMBER,
    (CREDIT = DEBIT) AS "BALANCED"
FROM ACCOUNTS;
  • Oracle数据库不支持在SQL查询结果中直接返回布尔类型,可改用数字1/0或者字符Y/N来代表平衡状态:
SELECT 
    ACCOUNT_NUMBER,
    CASE WHEN CREDIT = DEBIT THEN 1 ELSE 0 END AS "BALANCED"
FROM ACCOUNTS;

NULL值特殊处理

如果你的表中CREDIT或DEBIT字段存在NULL值,默认的相等判断会返回非真,若需要将两边均为NULL的场景也判定为平衡,可以调整判断条件:

SELECT 
    ACCOUNT_NUMBER,
    CASE 
        WHEN CREDIT = DEBIT OR (CREDIT IS NULL AND DEBIT IS NULL) 
        THEN TRUE 
        ELSE FALSE 
    END AS "BALANCED"
FROM ACCOUNTS;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 01:54:05