1

我有一个包含两个字段的表单,每个字段都是 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;
4

2 回答 2

3

问题如前所述,在 Oracle 中 NULL 不等于 NULL。在 Oracle 中,与 NULL 的比较总是错误的。您可以使用 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;
于 2013-05-15T11:12:04.530 回答
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;
于 2013-05-15T05:14:00.110 回答