<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

解决方案 »

  1.   


    我现在知道的方式是通过sql拼接,但这不是最优选择,所以才提问。
      

  2.   


    我现在知道的方式是通过sql拼接,但这不是最优选择,所以才提问。
      

  3.   

    WRITE_TIME  >=startTime and (WRITE_TIME < endtime or endtime is null)
      

  4.   

    查询条件参数为空的话就不需要处理这个条件了呀!java里边处理下就行了
      

  5.   

    我把问题再描述的清楚一点现在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[<]]>to_date('{endTime}','yyyy-mm-dd hh24:mi:ss')+1 
    这里的{startTime}、{endTime}都是别人传过来的,也就是不管两个值是否为空,我都会接收到这两个参数。有没有办法写一条sql语句,当两个参数都为空时,查询所有数据,当其中一个参数为空时,返回符合另一个参数的所有记录。多谢各位!
      

  6.   

    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);不过还是建议在应用代码里做判断。
      

  7.   

    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)