dee*_*dee 4 sql oracle where-clause notin
我有一个很长的PL/SQL,除了where子句的一小部分外,它运行良好.
我期望应该返回一行,但是,因为where子句检查的字段为null,所以尽管符合条件,仍不会返回该行.
我在这里读了一篇非常好的说明: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'))
Run Code Online (Sandbox Code Playgroud)
在我的情况下,Col_One和Col_Two中的行都将为空.
任何帮助是极大的赞赏.
谢谢.
尝试这个:
AND (NVL(T.Col_One,'NuLl') NOT LIKE 'AString'
OR NVL(T.Col_Two,'NuLl') NOT IN ('BString','CString'))
Run Code Online (Sandbox Code Playgroud)
这样的事情应该有效:
T.Col_One IS NULL OR T.Col_One NOT LIKE 'AString'
OR T.Col_Two IS NULL OR T.Col_Two NOT IN ('BString','CString')
Run Code Online (Sandbox Code Playgroud)
请注意......
T.Col_Two NOT IN ('BString','CString')
Run Code Online (Sandbox Code Playgroud)
......相当于......
T.Col_Two <> 'BString' AND T.Col_Two <> 'CString'
Run Code Online (Sandbox Code Playgroud)
...如果T.Col_Two为NULL,则"折叠"为NULL.
归档时间: |
|
查看次数: |
9996 次 |
最近记录: |