日期:2014-05-17  浏览次数:20466 次

mssql中大量数据的比较
求助:数据库里有个表字段是记录的坐标点,表里面有几万条数据,求:当我指定一个坐标点,比较我指定的坐标点和数据库中的坐标点之间距离是否小于某个固定值(比如小于100米),找到所有符合条件的点
------解决方案--------------------
create table tb(x int,y int)
insert into tb select 150,200
insert into tb select 225,210
go
declare @x int,@y int
declare @l int
set @l=100  --固定距离
set @x=155  --输入坐标点
set @y=101
select * from(
select sqrt(SQUARE(x-@x)+SQUARE(y-@y))d from tb
)t where d<=100
/*
d
----------------------
99.1261822123701

(1 行受影响)

*/
go
drop table tb

------解决方案--------------------
坐标点貌似是两点吧.
另外,数据库里的上万条数据应该算不上大量数据.
------解决方案--------------------
那是经纬度,不是平面坐标,不能那样计算距离。
------解决方案--------------------
先通过粗略的算法排除大量肯定不符合的
符合的才按精确的算法进行比较
------解决方案--------------------
用函数吧。。。跟算IP段一样的。。你可以百度下