sql - oracle sql查询的3个输入
问题描述
我有以下查询:
where POSTDATE between to_date('&START_DATE','DD-MM-YYYY') and to_date('&END_DATE','DD-MM-YYYY')
and username='&username'
但我的要求是:
- 我需要开始日期和结束日期之间的所有用户名(第三个输入为空白)和/或
- 在查询中提供的开始日期和结束日期之间指定的用户名(在第三个输入中)
解决方案
无论如何,您都需要日期范围检查,然后您需要所有用户或指定用户;所以你可以检查你是否获得了用户名:
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
);如果你是,那么你可以使用单 & 或双 &&,但如果不使用双 && 会阻止你被问两次。
推荐阅读
- javascript - AWS Cloudfront Lambda@Edge 奇怪的异步/回调用法
- java - 有没有办法定义 cdi 销毁实例的顺序?
- jquery-validate - 根据下拉选择更改文本框上的正则表达式验证
- javascript - 如何使用 vanilla JavaScript 检测和显示 WiFi 信号强度
- javascript - 获取两个div的实时位置并更新连接线
- vue.js - Vue 3 .vue 文件的新实例
- css - React 的最佳实践。悬停或鼠标输入/鼠标离开?
- javascript - 加载资源失败:服务器响应状态为 404 (Not Found) Node.js socket.io
- python - 计算文件每一行中数字的平均值
- python - windll.user32.ReleaseDC 失败:返回 0