我想我在Oracle数据库(10g)中遇到了PL/SQL中一个相当简单的问题,我希望你们中的一个能够帮助我。PL/SQL Oracle条件等于
我试图尽可能地解释这一点,但对我来说很难。 当我尝试比较2个不同表的varchar2值以检查是否需要创建新记录,或者我可以重新使用现有ID的ID时,DB(或I)以错误的方式比较这些值。当两个字段都包含一个值时,这一切都很好,这会导致它理解的'a'='a'。但是当两个字段都是NULL(或者''哪个Oracle会变成NULL')时,它就不能比较这些字段。
我发现这个问题的'解决方案',但我确定有更好的方法。
rowTable1 ROWTABLE1%ROWTYPE;
iReUsableID INT;
SELECT * INTO rowTable1
FROM TABLE1
WHERE TABLE1ID = 'someID';
SELECT TABLE2ID INTO iReUsableID
FROM TABLE2
WHERE NVL(SOMEFIELDNAME,' ') = NVL(rowTable1.SOMEFIELDNAME,' ');
所以NVL改变null
值' '
后,它会以正确的方式进行比较。
由于提前,
丹尼斯
您需要括号:col1 = col2或(col1为空,col2为空) – Andrej
@Andrej。 。 。虽然括号是一个好主意,但它们不是*必需的*。 '和'具有比'或'更高的优先级。 –
我认为你发布的条件是最干净的。那谢谢啦! – Dennis