我有一种情况,我得到一个结果集,并根据我需要从另一个表中删除记录的结果集中的值。
示例:
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);
我该怎么做?
答案 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)的特殊条件)。