<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
<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
解决方案 »
- ORA-01767: UPDATE ...SET 表达式必须是子查询 怎么解决这个错误
- 测试Oracle存储过程
- ORA-00257: 归档程序错误。在释放之前仅限于内部连接
- 问各位大侠一个数据库查询问题?
- Oracle(10G)无法建立监听(用sqlplus正常),怎么办?
- 教你SQL Server数据库导出到Oracle数据库的方法
- 请问ORACLE10G中AWR报告如何通过工具或脚本自动生成?
- 事务中怎么不能使用ALTER TABLE语句呀?
- Database Configuration Error! install Oracle92 on Redhat9
- 谁能告诉我 oracle下面的 这个日志太过大怎么处理啊?
- oracle小问题
- oracle的sql语句自动补全
我现在知道的方式是通过sql拼接,但这不是最优选择,所以才提问。
我现在知道的方式是通过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语句,当两个参数都为空时,查询所有数据,当其中一个参数为空时,返回符合另一个参数的所有记录。多谢各位!
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);不过还是建议在应用代码里做判断。
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)