Oracle:处理Null In Case语句

时间:2017-03-02 11:35:22

标签: sql oracle

我在case-when块中使用了一个巨大的查询。 我的查询如下:

SELECT 'TEST' FROM DUAL WHERE 1=1 AND EXISTS(
SELECT 
  CASE
   WHEN EXISTS
     (Select 1 from dual where 1=2)
   THEN 1
   ELSE 
    (Select 1 from dual where 1=2)
   END
FROM DUAL);

我只想在case-when语句返回记录时执行我的select语句。但是,它始终打印'Test',因为此代码始终返回NULL:

SELECT 
  CASE
   WHEN EXISTS
     (Select 1 from dual where 1=2)
   THEN 1
   ELSE 
    (Select 1 from dual where 1=2)
   END

所以基本上我只想在没有返回记录(或空值)的情况下打印“TEST”。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

具有NULL值的一列的行与不存在的行不同。因此,使用EXISTS无法完全满足您的需求。一种方法是:

SELECT 'TEST'
FROM DUAL
WHERE 1 = 1 AND
      1 = (SELECT CASE WHEN EXISTS(Select 1 from dual where 1=2)
                       THEN 1
                       ELSE 0
                  END
           FROM DUAL
          );

即,查找特定值,而不是检查是否存在行。

答案 1 :(得分:0)

我们可以使用下面的方法来处理NULL

slider.oninput = function() {
  output.innerHTML = this.value;
}

function updateValue() {
  var rangeInput = document.getElementById("myRange").value
  if (rangeInput == 20) {
    $("#box").css({'background':'red'});

  }
  if (rangeInput == 40) {
    $("#box").css({'background':'blue'});

  }
    if (rangeInput == 60) {
    $("#box").css({'background':'pink'});

  }
    if (rangeInput == 80) {
    $("#box").css({'background':'green'});

  }
}