sql - 空列相等
问题描述
我有桌子叫pat_info
。在此表中,我有id_number
可以为空的列。当我写这个查询时:
SELECT *
FROM pat_info
WHERE id_number = id_number
AND first_name = 'adam'
它不检索任何东西,因为'adam'行不包含值id_number
所以我需要在不删除的情况下检索“亚当”行。
Id_number = id_number
因为它是必需的。
解决方案
您很可能一开始就不需要该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;
推荐阅读
- sqlite - SQLite - 防止多次评估缓慢的 CTE
- google-cloud-platform - Terraform:如何使用堆栈驱动程序指标在 GCP 中自动缩放托管实例组
- android - 模拟器:恐慌:缺少“x86”CPU 的模拟器引擎程序。在 Windows10 上
- python - 将距离对转换为距离矩阵以用于层次聚类
- android - 仅针对由 NoclassDefFound 错误引起的特定活动使用 AppcompatTextView 膨胀 exeption
- matlab - 绘制带有孔的不规则 xy 数据的轮廓
- selenium-webdriver - 如何在默认情况下排除一个标签,但在调用另一个标签时也包括这些标签?
- mysql - 前缀最佳匹配 MySQL
- postgresql - 在函数 POSTGRESQL 中锁定行
- laravel - 响应代码 250,但得到代码“535”,消息“535-5.7.8 用户名和密码不被接受