首页 > 解决方案 > 空列相等

问题描述

我有桌子叫pat_info。在此表中,我有id_number可以为空的列。当我写这个查询时:

SELECT *
FROM pat_info
WHERE id_number = id_number
    AND first_name = 'adam'

它不检索任何东西,因为'adam'行不包含值id_number

所以我需要在不删除的情况下检索“亚当”行。

Id_number = id_number因为它是必需的。

标签: sqloracle

解决方案


您很可能一开始就不需要该WHERE子句。只需使用这个:

SELECT *
FROM pat_info
WHERE first_name = 'adam';

您当前查询可能失败的原因是,如果id_number碰巧是NULL,那么检查id_number = id_number将失败,因为NULL(语义上的意思是“未知”)不等于自身。

如果您必须在子句中包含该虚拟检查,请WHERE尝试使用WHERE 1 = 1,即:

SELECT *
FROM pat_info
WHERE first_name = 'adam' AND 1 = 1;

推荐阅读