我有一个包含两个字段的表单,每个字段都是 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;
我有一个包含两个字段的表单,每个字段都是 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;
问题如前所述,在 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;
如果表单字段为 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;