Oracle Forms 6i比较字段

Oracle Forms 6i比较字段,oracle,plsql,oracleforms,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; 如果表单字段为空,则相等比

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

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

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;

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

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;

问题已经指出,在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;

问题已经指出,在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;

如果将内容添加到消息中,内容会是什么样子?分号在'Show_Message'Fields Match'之后是可选的,不是吗?我要尝试一下,让您知道OOPS我忘记了分号在if语句之前给出一条来自:field1和:field2的消息。如果字段为空,则此比较将不起作用这是问题所在字段为空,因此oracle forms无法比较空字段。可以比较空变量,这将导致空值。但是,对于字段或表单项,似乎有所不同。如果将其添加到消息中,内容会是什么样子?分号在'Show_Message'Fields Match'之后是可选的,不是吗?我要尝试一下,让您知道OOPS我忘记了分号在if语句之前给出一条来自:field1和:field2的消息。如果字段为空,则此比较将不起作用这就是问题所在字段为空,因此oracle forms无法比较空字段。可以比较空变量,这将导致空值。但是,对于字段或表单项,情况似乎有所不同