mysql经纬度 某半径长度 内查询数据

x,y在setParameter是Double类型;
x,y在同一列里  用空格分开时;SUBSTRING_INDEX(字符串,分割字符串字符,计数) 计数为正时,从左往右第N个分隔符左边全部内容,负数从右开始第N个分隔符的右边全部内容,可以嵌套选取中间的字符串。
经纬度+1是111km;
这个方法画的是圆;

sb.append(" SELECT * FROM  经纬表  where SUBSTRING_INDEX(某列(x,y),' ', 1)<=:x+0.0045 and SUBSTRING_INDEX(某列(x,y),' ', 1)>=:x-0.0045 ");
				
sb.append(" and  SUBSTRING_INDEX(某列(x,y),' ', -1)>=:y-0.0045 and  SUBSTRING_INDEX(某列(x,y),' ', -1)<=:y+0.0045" );
				
sb.append(" order by  acos(sin(:x * 3.1415)/180) * sin((SUBSTRING_INDEX(某列(x,y),' ', 1) * 3.1415) / 180) "
      + "+cos((:x*3.1415)/180)*cos((SUBSTRING_INDEX(某列(x,y),' ', 1)*3.1415)/180)*cos((:y  *  3.1415)/180 "
      + "- (SUBSTRING_INDEX(某列(x,y),' ', -1)*3.1415)/180)*6380 asc )");	

你可能感兴趣的:(JAVA)