如何在比较期间区分NULL和NOT NULL

时间:2014-09-26 09:18:56

标签: sql compare isnull

我有一种情况,我得到一个结果集,并根据我需要从另一个表中删除记录的结果集中的值。

示例:

ResultSet rs = SELECT col FROM TableA;

现在我不知道rs.getString(1)是否null

所以如果它是null我必须这样做:

DELETE FROM TableB WHERE col2 IS NULL;

如果不为null则为:

DELETE FROM TableB WHERE col2 = rs.getString(1);

我该怎么做?

3 个答案:

答案 0 :(得分:0)

如果使用普通比较运算符,如果其中一个操作数为空,则它总是返回false。

所以你必须明确检查空值:

DELETE FROM TableB 
WHERE 
  col2 = rs.getString(1) OR -- Neither are NULL and they have the same value.
  (col2 IS NULL AND rs.getString(1) IS NULL) -- or Both are null.

答案 1 :(得分:0)

类似的东西:

DELETE FROM TableB 
WHERE ISNULL(col2,'VALUEISNULL') = ISNULL(rs.getString(1),'VALUEISNULL')

' VALUEISNULL'可能是你想要的任何不适合该领域的有效价值。

答案 2 :(得分:0)

在SQL中,使用逻辑运算符null value(eg =, !=, <, etc)和任何其他值(包括另一个null)进行比较将导致null,对于a的目的,它被视为false where子句。原因是null表示&#34; unknown&#34;,因此与null进行任何比较的结果也是&#34; unknown&#34;。因此,您不会使用my_column = null对行进行点击。

SQL提供了一种特殊的语法,用于测试列是null,是null还是not null,这是测试null(或非null)的特殊条件)。