【发布时间】:2015-02-25 15:52:58
【问题描述】:
我不敢相信我在这方面遇到了这么多麻烦。
使用这个语句:
USE XXXX
SELECT
ID, DESCRIPTION, STATUS
FROM
PART
WHERE
PART.ID LIKE 'PCH%'
AND PART.DESCRIPTION NOT LIKE '%OBSOLETE%'
AND PART.STATUS = 'O'
我得到一个包含 34 个条目的表,每个条目都包含 PART.STATUS 中的 O。
我真正想说的是,只显示不具有 O 状态的值。我知道还有其他方法可以解决这个问题。不是 O 的值应该为空,但我很生气,我无法弄清楚“不等于”语句是如何工作的。当我将最后一行切换为:
AND PART.STATUS <> 'O'
或
AND PART.STATUS != 'O'
我得到一个空表返回。
如果我使用这条线
AND PART.STATUS IS NULL
我得到了我要找的桌子。
我对“不相等语句”的使用有什么误解?
【问题讨论】:
-
通过使用
is null,你得到了你想要的吗? -
你不能对
NULL使用正常的等式(=)或不等式(<>)运算符 - 对NULL使用这些运算符不会返回一个合适的值 - 它返回NULL。为了检查NULL,您必须使用IS NULL或IS NOT NULL- 没有其他方法
标签: sql logical-operators