sql查询数据库中符合条件的数据

假设表中有x,y两个字段,对应圆的方程(x-a)²+(y-b)²=r²。a,b,r是确定的值。那如何用sql语句查询符合条件(在这个园范围内)的x,y?

直接把公式写到where条件里就行了啊

select x,y 
from 表名 
where (x-a)*(x-a)+(y-b)*(y-b)<=r*r

追问

那如果我的a,b是要外面传入的。比如说
double a = d.getA();
double b = d.getB();
String sql="select x,y from t_callcarinfo
where (x-a)*(x-a)+(y-b)*(y-b)<=r*r";
这个a和b要怎么填到里面去是不会错的呢?

追答

C#是这样:

//创建SqlCommand对象
SqlCommand cmd = conn.CreateCommand();             
cmd.CommandType = CommandType.Text;
//构造sql语句
cmd.CommandText = "select x,y from t_callcarinfo where (x-@a)*(x-@a)+(y-@b)*(y-@b)<=@r*@r";  
//给参数sql语句的参数赋值
cmd.Parameters.Add("@a", SqlDbType.Double);cmd.Parameters["@a"].Value = a;        
cmd.Parameters.Add("@b", SqlDbType.Double);cmd.Parameters["@b"].Value = b;          
cmd.Parameters.Add("@r", SqlDbType.Double);cmd.Parameters["@r"].Value = r;

           

追问

double a = driverInfo.getLongitude();
double b = driverInfo.getLatitude();
String sql =
"select x,y from userinfo where (x-"+a+")*(x-"+a+")+(y-"+b+")*(y-"+b+")<=1";
java 这样写对吗?不管怎么样,你这么认真地回答我的问题,十分感谢!

追答

不要这么写,用参数方式比较好。类似于下面这样:

PreparedStatement pstmt = con.prepareStatement("select * from table where name = ?");
pstmt.setString(1, para);
ResultSet rs = pstmt.executeQuery();

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-29
如果存放x,y的表叫做 roundxy,那么SQL是这样滴:

select *
from roundxy
where power((x-1),2)+power((y-1),2)=power(1,2)追问

那如果我的a,b是要外面传入的。比如说
double a = d.getA();
double b = d.getB();
String sql="select * from t_callcarinfo
where power((slongitude-?),2)+power((slatitude-?),2)=power(1,2)";
这个a和b要怎么填到?那里去是不会错的呢?

相似回答