sql查询中的where子句出错

时间:2010-08-31 12:01:24

标签: sql sql-server-2005

当我执行它时,我有以下sql查询显示零行我在其中有一个名为distance的值为null,当我执行此查询时,距离feild将填充一些数值但是如果我指定条件距离< 2或者距离< 10或...显示相同的结果我能知道什么是问题。

  SELECT Id,Name1,ZipCode,StreetName,StreetNumber,State1,Lat,
   Lng,Keyword, 
  ( 6371 * ACOS( COS( (12.925432/57.2958) ) 
   * COS(  (Lat/57.2958)  ) * COS( ( Lng/57.2958 ) - (77.5940171/57.2958) ) 
   + SIN( 12.925432/57.2958 ) * SIN(  Lat/57.2958  ) ) ) AS distance 
  FROM Business_Details 
  where ( 
   (StreetName like '%jayanagar%')
   and (Keyword like '%plumbing%' )
   and (distance<3)
   ) 
   ORDER BY distance;

2 个答案:

答案 0 :(得分:2)

你之前得到的答案......

[How to use" HAVING "and "ORDER BY" clause in sql

你不能在where子句中引用字段距离,你必须使用:

( 6371 * ACOS( COS( (12.925432/57.2958) ) 
* COS(  (Lat/57.2958)  ) * COS( ( Lng/57.2958 ) - (77.5940171/57.2958) ) 
+ SIN( 12.925432/57.2958 ) * SIN(  Lat/57.2958  ) ) ) < 3

答案 1 :(得分:0)

通过在sql中创建视图,可以成功执行此特定查询。 创建视图业务为SELECT Id,Name1,ZipCode,StreetName,StreetNumber,State1,Lat,Lng,Keyword,(6371 * ACOS(COS((12.925432 / 57.2958))* COS((Lat / 57.2958))* COS((Lng /57.2958) - (77.5940171 / 57.2958))+ SIN(12.925432 / 57.2958)* SIN(Lat / 57.2958)))AS距离Business_Details ORDER BY距离; 此特定视图包含距离字段的结果,然后我们可以查询视图业务以操纵输入的距离值的结果 select * from business where(distance&lt; 2);