oracle - 如何比较PLSQL中的空值

标签 oracle plsql null compare

下面是我的代码。

一个变量没有值(value)。另一个变量有一个值。在下面的代码中,我想打印变量是 即使在 var1 没有任何值的情况下也不相同。我该怎么做?

CREATE OR REPLACE PACKAGE BODY mypackagebody IS

 PROCEDURE comparenull() IS
  l_var1 mytable.mycolumn1%TYPE;
  l_var2 mytable.mycolumn2%TYPE;

 BEGIN
  BEGIN
   SELECT var1
         ,var2
   INTO   l_var1
         ,l_var2
   FROM   mytable;
  EXCEPTION
   WHEN no_data_found THEN
    var1 := NULL;
    var2 := NULL;
  END;

  /* At this point var1 is NOT having any value and var2 is having a value.*/
  /* The below if condition is returing false. But, I wanted to go inside the if condition and print that the var values are not same*/
  IF var1 <> var2
  THEN
   dbms_ouput.put_line('var1 and var2 are not same');

  END IF;

 END comparenull;

END mypackagebody;

最佳答案

我认为您需要一个NULL 安全比较。在 Oracle 中,您可以使用多个条件:

IF var1 <> var2 OR
   (var1 is null and var2 is not null) OR
   (var1 is not null and var2 is null)

关于oracle - 如何比较PLSQL中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56213433/

相关文章:

sql - Oracle SQL 隐藏重复值

oracle - 将 XML 从 Oracle 发布到 WebAPI

plsql - Z-ORA-01745 : invalid host/bind variable name (PLSQL)

oracle - Oracle中可以遍历rowtype字段吗?

c# - 使用 1 种方法将数据拉入 GridView 并在保存更改时出现 null ref 异常

oracle - 在 Oracle 过程中运行 DDL - ORA-06508 - 如何在运行时重新编译?

java - Axon 框架与 Atomikos?工作怎么样?

java - 如何在一条语句中删除记录并返回它们? SQL/Java

java - java 访问数组

mysql - SQL 查询不显示空值