【发布时间】:2014-07-23 10:46:33
【问题描述】:
我认为我在 Oracle 数据库 (10g) 上的 PL/SQL 中遇到了一个相当简单的问题,我希望你们中的一个可以帮助我。
我试图尽可能清楚地解释这一点,但这对我来说很难。 当我尝试比较 2 个不同表的 varchar2 值以检查是否需要创建新记录或者我可以重新使用现有记录的 ID 时,数据库(或我)以错误的方式比较这些值。当两个字段都包含一个值时,一切都很好,这会导致它理解的 '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 的值更改为 ' ',之后它将以正确的方式进行比较。
提前致谢,
丹尼斯
【问题讨论】: