怎么根据用户输入的多个关键字组合查询

but_not 2017-12-27 11:26:55
根据用户输入的任一一个内容,查询出相应的记录
若用户只输入创建者,筛选该创建者的记录
若用户只输入开始时间跟结束时间,则筛选出用户输入的时间范围内的记录
若用户输入创建者,开始时间,结束时间,则根据三个内容进行筛选
若用户输入创建者,开始时间/结束时间中的一个,则输出该创建者及此开始时间的记录
sql查询该怎么写,请大家给我个思路
---------------------------------
...全文
560 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧水幽幽泉 2017-12-27
  • 打赏
  • 举报
回复
思路很简单:采用动态sql,根据输入值是否为空进行判断:当不为空时,|| 拼接上输入条件即可。
js14982 2017-12-27
  • 打赏
  • 举报
回复
:cjz为空时,(cjz=:cjz or :cjz is null),前面cjz=:cjz不满足,后面:cjz is null满足条件返回所有记录
js14982 2017-12-27
  • 打赏
  • 举报
回复
引用 4 楼 but_not 的回复:
[quote=引用 3 楼 js14982 的回复:]
where 1=1
and (cjz=:cjz or :cjz is null)
and (start_time=:start_time or :start_time is null)
and (end_time=:end_time or :end_time is null)
----------------------------------------------------------------------------------------- 请问如果用户三个值都没有输入,怎么返回所有记录[/quote] 上面语句满足你说的,3个值都没输入返回所有记录
but_not 2017-12-27
  • 打赏
  • 举报
回复
引用 3 楼 js14982 的回复:
where 1=1
and (cjz=:cjz or :cjz is null)
and (start_time=:start_time or :start_time is null)
and (end_time=:end_time or :end_time is null)
----------------------------------------------------------------------------------------- 请问如果用户三个值都没有输入,怎么返回所有记录
js14982 2017-12-27
  • 打赏
  • 举报
回复
where 1=1
and (cjz=:cjz or :cjz is null)
and (start_time=:start_time or :start_time is null)
and (end_time=:end_time or :end_time is null)
hp961218 2017-12-27
  • 打赏
  • 举报
回复
这个要看如果3个都不输入是否有默认值,如果有,则这三个字段直接拿来当条件使用即可

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧