首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL select near by值

SQL select near by值
EN

Stack Overflow用户
提问于 2015-07-05 21:10:33
回答 5查看 1.7K关注 0票数 4

我有一个带有两个字段的表"T_Person“,我想通过Height int, BirthDate datetime来搜索它。

当我查询这个表时,我希望得到的行的值与我搜索的值接近。例如,当我搜索身高为175厘米的人时,如下所示:

代码语言:javascript
复制
Select * 
from T_Person 
where Height = 175

我还希望得到高度值接近175的行。例如174,173,176...

date列也是如此。当我搜索'2003-06-25‘时,我也希望得到与其相近的日期。

有可能吗?

EN

回答 5

Stack Overflow用户

发布于 2015-07-05 21:12:39

更改过滤器:

代码语言:javascript
复制
 Select * from T_Person where Height >= 173 and Height <= 177

或者:

代码语言:javascript
复制
  Select * from T_Person where Height between 173 and 177

对于datetime字段,您应该使用cast()函数来获得最佳结果:

代码语言:javascript
复制
  Select * from T_Person where BirthDate  
     between CAST('2014-02-28' AS DATETIME) and CAST('2015-02-28' AS DATETIME); 
票数 3
EN

Stack Overflow用户

发布于 2015-07-05 21:15:48

你需要某种度量来衡量是什么构成了接近。我还怀疑您希望完全匹配的内容最先出现。因此,要按“邻近度”对行进行排序,请使用:

代码语言:javascript
复制
select p.*
from t_person p
order by abs(height - 175);

过滤结果非常有用,因此您还可以添加where子句:

代码语言:javascript
复制
select p.*
from t_person p
where height between 175 - 2 and 175 + 2
order by abs(height - 175);

同样的想法也适用于日期。但是,您没有在问题中指定您的数据库,而日期函数是高度特定于数据库的。

票数 3
EN

Stack Overflow用户

发布于 2015-07-05 21:15:54

将175替换为所需的值。使用这个

代码语言:javascript
复制
Select * from T_Person where Height between 175 - 2 and 175 + 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31230684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档