当WHERE中的绑定变量为NULL时,返回所有数据

时间:2014-09-01 10:54:26

标签: sql oracle oracle-apex

我有一个文字字段,用户将一年放入:the_SCHEME_YEAR。然后,用户获取该年的数据。但是,当用户将文本字段留空时,我想要将所有年份都拉回来。

这是我开发的代码,但是当:the_SCHEME_YEAR被客户留空时,无法获得所有年份。

AND the_year in NVL(:the_SCHEME_YEAR, to_char( '2005,'||'2006,'||'2007'))

任何提示都会有所帮助。

SELECT the_year
     , ent_type
     , SUM (a.no_of_parts) number_ents 
     , SUM (ent_value * a.no_of_ents) value_ents
  FROM TEST_REGISTER A
 WHERE the_year > 2004 and the_year <= the_max_year
   AND ent_type is not null
   AND the_year in NVL(:the_SCHEME_YEAR, to_char( '2005,'||'2006,'||'2007'))
 GROUP BY the_year, ent_type
 ORDER BY 1

1 个答案:

答案 0 :(得分:0)

试试这个:

AND (  (:the_SCHEME_YEAR is null and the_year in (2005, 2006, 2007))
    OR the_year = :the_SCHEME_YEAR
    )

(请注意,SQL in运算符需要一个值列表,而不是它们的连接字符串。)