回答

收藏

如何在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)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则