首页 > 解决方案 > oracle sql查询的3个输入

问题描述

我有以下查询:

where POSTDATE between to_date('&START_DATE','DD-MM-YYYY') and to_date('&END_DATE','DD-MM-YYYY') 
and username='&username'

但我的要求是:

  1. 我需要开始日期和结束日期之间的所有用户名(第三个输入为空白)和/或
  2. 在查询中提供的开始日期和结束日期之间指定的用户名(在第三个输入中)

标签: sqloracle

解决方案


无论如何,您都需要日期范围检查,然后您需要所有用户或指定用户;所以你可以检查你是否获得了用户名:

where POSTDATE between to_date('&START_DATE','DD-MM-YYYY') and to_date('&END_DATE','DD-MM-YYYY') 
and ('&&username' is null or username='&&username')

如果没有给出用户名,则第二行计算为:

and ('' is null or username='')

在 Oracle''中相当于 null (尽管他们一直警告说有一天可能会改变......)所以第一个子句是正确的。

您还没有说您是否明确提示输入(使用accept);如果你是,那么你可以使用单 & 或双 &&,但如果不使用双 && 会阻止你被问两次


推荐阅读