如何在Oracle中的NOT IN和NOT LIKE语句处理空值?
技术问答
206 人阅读
|
0 人回复
|
2023-09-14
|
我有很长的PL / SQL,除了where除了句子的一小部分,它可以正常工作。
! ]1 r; x( O* V# y6 y/ e* v我希望回到一行,但因为where检查子句的字段为null,因此,即使符合条件,也不会返回银行。, o& i2 Q2 ^7 Z
它解释了空值的影响NOT IN而且我觉得对于句子,NOT LIKE同样如此。
2 Z; Z7 Q- d) c1 J我一直找不到的是我需要的可比替代品。我需要以某种方式切换它吗?IN和LIKE或者提供一些内容NUll回到这个行?
; h2 w0 \6 o( `& J9 b这是我代码的简化版本。
7 q* a$ @$ D q1 I. E. \SELECT * FROM Temp_Table TWHERE -- Other where constraintsAND (T.Col_One NOT LIKE 'AString OR T.Col_Two NOT IN ('BString','CString'))在我的情况下,银行在Col_One和Col_Two中都将为空。/ g1 u( M" }! w; u
任何帮助都是极大的赞赏。
' j. A9 i3 Q9 `0 e, _, }( b谢谢。, ~+ x6 N$ u4 U* H' K D9 G# f `
# w, C( x+ Z$ q6 h' T" }
解决方案: & Y% `: }; y& n# [- i8 {; y
试试这个:
. Z, B, B1 [+ }1 D. dAND (NVL(T.Col_One,'NuLl') NOT LIKE 'AString OR NVL(T.Col_Two,'NuLl') NOT IN ('BString','CString) |
|
|
|
|
|