我有很长一段 PL/SQL,除了 where 子句的一小部分之外,它运行良好。
我期望应该返回一行,但是,由于 where 子句检查的字段为空,因此尽管满足条件,但不会返回该行。
我在这里读到了一篇非常好的注释:
http://jonathanlewis.wordpress.com/2007/02/25/not-in/ http://jonathanlewis.wordpress.com/2007/02/25/not-in/
它解释了 Null 如何影响 NOT IN 语句,我认为 NOT LIKE 也是如此。
我无法找到我需要的类似替代品。我是否需要以某种方式将其切换为 IN 和 LIKE,或者提供一些内容以在 NULL 时返回该行?
这是我的代码的简化版本。
SELECT * FROM Temp_Table T
WHERE -- Other where constraints
AND (T.Col_One NOT LIKE 'AString'
OR T.Col_Two NOT IN ('BString','CString'))
在我的情况下,该行在 Col_One 和 Col_Two 中都有空值。
任何帮助是极大的赞赏。
Thanks.
尝试这个:
AND (NVL(T.Col_One,'NuLl') NOT LIKE 'AString'
OR NVL(T.Col_Two,'NuLl') NOT IN ('BString','CString'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)