求教一个关于判断区间的SQl语句

程序员小哈
嵌入式领域优质创作者
博客专家认证
2011-01-05 09:31:09
下面是一个数据库表,我想查询K1、K2、K3中是否存在1.60这个值,我该如何写这个SQL
语句呢?
我的要求是K1、K2、K3要加减OffSet这个值之后再判断1.60是否在其区间内?

id K1 K2 K3 OffSet
1 1.575 1.85 1.99 0.05
2 2.65 2.98 2.15 0.03
3 3.54 1.56 NULL 0.05


正常情况下,1.60我应该能查出来两个数据,id为1和3两条,因为id为1的K1 1.575-0.05 <1.6<1.575+0.05,满足条件;
id为3的K2 1.56-0.05<1.6<1.56+0.05,满足

先谢谢大家了
...全文
318 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员小哈 2011-01-05
  • 打赏
  • 举报
回复
结贴啦,谢谢大家
billpu 2011-01-05
  • 打赏
  • 举报
回复
如果k不确定,就需要自定义动态拼接sql语句了 用exec调用
billpu 2011-01-05
  • 打赏
  • 举报
回复
select * from tb
where (abs(ISNULL(K1,0)-1.6)<offset)
OR (abs(ISNULL(K2,0)-1.6)<offset)
OR (abs(ISNULL(K3,0)-1.6)<offset)

ws_hgo 2011-01-05
  • 打赏
  • 举报
回复
select * from tb 
where (K1-OFFSET<1.6 AND K1+OFFSET>1.6)
or (K2-OFFSET<1.6 AND K2+OFFSET>1.6)
or (K3-OFFSET<1.6 AND K3+OFFSET>1.6)
程序员小哈 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 js_szy 的回复:]

SQL code
select * from tb
where (ISNULL(K1,0)-OFFSET<1.6 AND ISNULL(K1,0)-+OFFSET>1.6)
OR (ISNULL(K2,0)--OFFSET<1.6 AND ISNULL(K2,0)-+OFFSET>1.6)
OR (ISNULL(K3,0)--OFFSET<1.6 AND ISNULL(K3,0)-+OF……
[/Quote]

谢谢你的回复,答案很正确,学习了,再问一个问题就结贴哈
分全部给你啦

我用SQLite数据库,C语言操作,那个1.6的参数,要用拼接字符串的方式拼接吗?还有就是,如果更多的列,也要这么做吗?有没有什么快捷的方式,比如Excel中那样指定某几列,比如[C1]:[C5]就可以啦,希望再次得到您的帮助,里面结贴哈
华夏小卒 2011-01-05
  • 打赏
  • 举报
回复
select * from tb
where (ISNULL(K1,0)-OFFSET<1.6 AND ISNULL(K1,0)-+OFFSET>1.6)
OR (ISNULL(K2,0)--OFFSET<1.6 AND ISNULL(K2,0)-+OFFSET>1.6)
OR (ISNULL(K3,0)--OFFSET<1.6 AND ISNULL(K3,0)-+OFFSET>1.6)
华夏小卒 2011-01-05
  • 打赏
  • 举报
回复
select * from tb
where (K1-OFFSET<1.6 AND K1+OFFSET>1.6)
OR (K2-OFFSET<1.6 AND K2+OFFSET>1.6)
OR (K3-OFFSET<1.6 AND K3+OFFSET>1.6)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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