日期:2014-05-17  浏览次数:20845 次

根据条件查询数据,若参数为空的时候应该怎么写?
<root>
<table>
  <base_info>
      Select * From base_info@dbTest A
              where A.WRITE_TIME<![CDATA[>]]>=to_date('{startTime}','yyyy-mm-dd hh24:mi:ss')
                and A.WRITE_TIME<![CDATA[<]]>to_date('{endTime}','yyyy-mm-dd hh24:mi:ss')+1    
  </base_info>
</table>
</root>

我现在需要根据条件参数进行查询,endTime可能为空,这样的话,SQL语句应该如何写?  谢谢
sql

------解决方案--------------------
WRITE_TIME  >=startTime and (WRITE_TIME < endtime or endtime is null)
------解决方案--------------------
Select * From base_info@dbTest A
where (startTime is null or A.WRITE_TIM>=to_date(startTime,'yyyy-mm-dd hh24:mi:ss'))
and (endTime is null or A.WRITE_TIME>to_date(endTime,'yyyy-mm-dd hh24:mi:ss')+1);

不过还是建议在应用代码里做判断。
------解决方案--------------------
引用:
我把问题再描述的清楚一点。。。

现在sql语句是这样:
Select * From base_info@dbTest A
              where A.WRITE_TIME<![CDATA[>]]>=to_date('{startTime}','yyyy-mm-dd hh24:mi:ss')
                and A.WRITE_TIME<![CDATA……



Select * From base_info@dbTest A
              where A.WRITE_TIME<![CDATA[>]]>=to_date('{startTime}','yyyy-mm-dd hh24:mi:ss')
                and A.WRITE_TIME<![CDATA[<]]>nvl(to_date('{endTime}','yyyy-mm-dd hh24:mi:ss')+1,一个能让这个表里的所有记录满足此条件的极限值比如9999-12-31)