WenXiangShi 2024-04-09 13:44 采纳率: 84.2%
浏览 38
已结题

oracle where后面 能否 加判断的条件?

oracle where后面 能否 加判断的条件?
如 : select * from table a where ( if 08:00>系统时间>20:00 then a.status='0' else a.status='1')
当系统时间为8:00到20:00 查询条件为 0 反之 则为 1

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-04-09 13:44
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    答案: 可以在Oracle的where后面加判断的条件,可以使用CASE WHEN语句完成这个需求。格式如下: select * from table a where a.status = case when to_char(sysdate, 'HH24:MI') between '08:00' and '20:00' then '0'
        else '1' 
    

    end; 这个语句的作用是:如果系统时间在8:00到20:00之间,就选择a.status=0的数据,否则选择a.status=1的数据。这里使用了to_char函数,将sysdate转换为HH24:MI的格式,便于比较。 下面是一个简单的案例: 比如表格是这样的: id | name | status ----|------|------- 1 | John | 0 2 | Jane | 1 3 | Jack | 1 当系统时间在8:00到20:00之间时,执行上面的语句,返回结果是: id | name | status ----|------|------- 1 | John | 0 如果系统时间在20:00到8:00之间,执行上面的语句,返回结果是: id | name | status ----|------|------- 2 | Jane | 1 3 | Jack | 1 需要注意的是,时间是连续的,如果时间为8:00和20:00,那么会选择status=1的数据。如果需要包含8:00和20:00的数据,需要修改比较符号。比如这样: select * from table a where a.status = case when to_char(sysdate, 'HH24:MI') >= '08:00' and to_char(sysdate, 'HH24:MI') <= '20:00' then '0' else '1' end; 这个语句的作用是:如果系统时间在8:00到20:00之间,就选择a.status=0的数据,否则选择a.status=1的数据。这里使用了to_char函数,将sysdate转换为HH24:MI的格式,便于比较。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月17日
  • 已采纳回答 4月9日
  • 创建了问题 4月9日

悬赏问题

  • ¥15 需要在vitis下实现彩调视频图像累加,并输出
  • ¥15 解决不了的LNK2019错误
  • ¥20 MATLAB仿真三相桥式全控整流电路
  • ¥15 EDA技术关于时序电路设计
  • ¥15 百度文心一言流式返回sse失败
  • ¥15 由于远程方已关闭传输流,身份验证失败
  • ¥15 rt-detr,PCB,目标检测
  • ¥15 有偿求指导实证代码。cfps清洗合并后,无论是构建平衡面板还是非平衡面板,都是只剩几百个样本量。求指导一下哪里出问题了,不要潦草回复
  • ¥15 mutlinichenet
  • ¥50 Qt5.14.2怎样使用qlistwidget存储指针类数据并更新?