我有以下记录
Cursor my_cursor Is Select y, x, z From table Order by y;
my_record my_cursor%rowtype;
知道记录x
属性是null
,我试图在while循环中检查它并获得以下结果:
While my_record.x != 'TXT' Loop // loop does not enter
While NVL(my_record.x, '') != 'TXT' Loop // loop does not enter
While NVL(my_record.x, ' ') != 'TXT' Loop // loop enters
我想知道为什么前2次尝试没有进入循环,知道在调试时,表达式的返回值是真的吗?
答案 0 :(得分:3)
简短回答:因为
''
被视为NULL
条件NULL != 'TXT'
既不是真也不是假。这是未知的。
NVL(my_record.x, '')
为NULL
,因此NVL(my_record.x, '') != 'TXT'
的逻辑值也未知。
顺便说一下 - 偶数NULL不等于NULL
您可能需要阅读documentation
中的更多内容