当前位置: 首页 > news >正文

校验数据是否重叠(各种操作符>,<,>=,<=,or,and)

最近接到一个需求,其中部分功能涉及到数据的重叠校验,并且录入的数据需要包含各种操作符。如果只通过java代码来查询并进行循环判断的话,判断情况会很复杂,幸好有同事的帮忙提供了一个用sql查询重叠部分的方法,现在分享一下供大家参考

 1.首先先具体介绍一下需求,主要是根据开始时间和结束时间来查询 相同时间段内是否有期限重叠的数据,如果有重叠则不让添加。也就是时间段和期限都重叠的数据不允许添加。

SELECT* 
FROM(SELECTLV FROM( SELECT LEVEL LV FROM DUAL CONNECT BY 100 >= LEVEL ) C1 WHEREC1.LV > 12 AND c1.lv <> 36 ) CJOIN (SELECT12 AS A,1 AS AA,--1 > 2>= 3< 4 <= 5 <>24 AS B,3 AS BB,--1 > 2>= 3< 4 <= 5 <>1 AS C,-- 1 and 2 orDATE '2021-01-01' AS STARTDATE,DATE '2022-01-01' AS ENDDATE FROMDUAL UNIONSELECT12 AS A,1 AS AA,--1 > 2>= 3< 4 <= 5 <>36 AS B,3 AS BB,--1 > 2>= 3< 4 <= 5 <>1 AS C,DATE '2022-01-01' AS STARTDATE,DATE '2023-01-01' AS ENDDATE FROMDUAL ) D ON (D.C = 1 AND ((( D.AA = 1 AND LV > D.A ) OR ( D.AA = 2 AND LV >= D.A ) OR ( D.AA = 3 AND LV < D.A ) OR ( D.AA = 4 AND LV <= D.A ) OR ( D.AA = 5 AND LV <> D.A ) ) AND (( D.BB = 1 AND LV > D.B ) OR ( D.BB = 2 AND LV >= D.B ) OR ( D.BB = 3 AND LV < D.B ) OR ( D.BB = 4 AND LV <= D.B ) OR ( D.BB = 5 AND LV <> D.B ) ) ) ) OR ((D.C = 2 AND ((( D.AA = 1 AND LV > D.A ) OR ( D.AA = 2 AND LV >= D.A ) OR ( D.AA = 3 AND LV < D.A ) OR ( D.AA = 4 AND LV <= D.A ) OR ( D.AA = 5 AND LV <> D.A ) ) OR (( D.BB = 1 AND LV > D.B ) OR ( D.BB = 2 AND LV >= D.B ) OR ( D.BB = 3 AND LV < D.B ) OR ( D.BB = 4 AND LV <= D.B ) OR ( D.BB = 5 AND LV <> D.B ) ) ) ) )

其中 SELECT LEVEL LV FROM DUAL CONNECT BY 100 >= LEVEL 是用来限定期限的数据,根据自己的具体情况来确认数据范围。我这里用100就足够了,其中的条件就是我们录入的数据。join的数据是从数据库中查询出来的数据,如果查询结果有数据,则证明有重复,否则没有重复。

http://www.lryc.cn/news/256202.html

相关文章:

  • 大一C语言作业 12.8
  • ELasticsearch:什么是语义搜索?
  • ooTD I 女儿是自己的,尽情打扮尽情可爱
  • 第62天:django学习(十一)
  • Rust测试字符串的移动,Move
  • vue+electron问题汇总
  • Linux中的网络时间服务器
  • fastadmin打印页面
  • Java 将word转为PDF的三种方式和处理在服务器上下载后乱码的格式
  • C\C++ 获取最值
  • 机器学习之无监督学习:九大聚类算法
  • Linux高级管理-搭建网站服务
  • Windows 系统,TortoiseSVN 无法修改 Log 信息解决方法
  • 编译 Android gradle-4.6-all.zip 报错问题记录
  • Linux系统调试课:Valgrind 内存调试
  • python主流开发工具排名,python开发工具有哪些
  • Spring Boot Async:从入门到精通,原理详解与最佳实践
  • oracle 19c创建db_link名称带.com域名问题处理
  • 银行卡二要素API的应用案例:从在线购物到金融投资
  • MySQL 忘记root密码后重置密码操作
  • 开源电子合同签署平台小程序源码/电子文件签字+在线合同签署系统源码/电子合同小程序源码
  • J.408之数据结构
  • 前端食堂技术周刊第 107 期:技术播客节、Deno Cron、FEDAY、XState v5、Electron 2023 生态系统回顾
  • 三防平板|手持终端PDA|8寸/10寸工业三防平板电脑主板方案定制
  • 【C语言】动态内存管理(C语言的难点与精华,数据结构的前置知识,你真的掌握了吗?)
  • 最长子序列问题(LCS)--动态规划解法
  • 实时流式计算 kafkaStream
  • 西南科技大学模拟电子技术实验七(集成运算放大器的非线性应用)预习报告
  • Ubuntu与Windows通讯传输文件(FTP服务器版)(没用的方法,无法施行)
  • 2024年AI视频识别技术的6大发展趋势预测