没有值时带有CASE的SQL语句

时间:2014-10-20 13:47:39

标签: sql oracle oracle10g case

我正在尝试将CASE语句用于以下内容,但是没有得到理想的结果。

我想要的是,如果没有基于where条件的值,那么我希望返回'N'作为结果。

SELECT CASE WHEN val IS NULL THEN  'N' else val END
from (select  nvl(is_expired,'x')val
  FROM test
 WHERE product_no = '12DF')

当表中不存在product_no 12DF时,我想返回一个值而不是空或null。

表结构已指定here

1 个答案:

答案 0 :(得分:3)

如果没有产品' 12DF',那么您将无法从您的子选择中获得任何行。

我不太确定你要解决哪个问题。 如果您已将其嵌入到程序中,因为您可以获得包含多行的结果集,那么该代码也应该能够处理空集。 如果您希望结果集中有一行或一行,则可以使用像max这样的聚合函数。

select nvl(max(is_expired), 'N')
  from test
 where product_no = '12DF';