Oracle Forms 6i比较字段

时间:2013-05-14 18:26:26

标签: oracle plsql oracleforms

我有一个包含两个字段的表单,类型为Char 128,我试图比较这些字段的内容。但是我没有得到适当的比较。当两个字段具有相同的数据时,仍然表示两个字段都不匹配。

Begin

IF(LTRIM(RTRIM(:field1)) = LTRIM(RTRIM(:field2)))THEN
 Show_Message('Fields Match');
ELSE
 Show_Message('Fields DO NOT Match');
END IF;

End;

2 个答案:

答案 0 :(得分:3)

问题如前所述,在Oracle中NULL不等于NULL。在Oracle中,与NULL的比较将始终为false。您可以使用NVL来解决这个问题,但在这种情况下,我宁愿使用IS NULL,如下所示:

Begin

  IF (LTRIM(RTRIM(:field1)) = LTRIM(RTRIM(:field2))) 
  OR (:field1 IS NULL AND :field2 IS NULL) THEN
   Show_Message('Fields Match');

  ELSE
   Show_Message('Fields DO NOT Match');

  END IF;

End;

答案 1 :(得分:2)

如果表单字段为NULL,则相等比较将不起作用。您可以使用nvl函数替换NULL

Begin

IF(LTRIM(RTRIM(nvl(:field1,'*@#')) = LTRIM(RTRIM(nvl(:field2,'*@#'))))THEN
 Show_Message('Fields Match');
ELSE
 Show_Message('Fields DO NOT Match');
END IF;

End;