Создание пользовательской функции MySQL?

Я только начал использовать MySQL с PHP и хотел бы знать, можно ли создать собственную функцию. Этот фрагмент кода должен проиллюстрировать то, что я пытаюсь сделать.

// a somewhat complicated formula not suitable to embed into the query
function Distance($latA, $lonA, $latB, $lonB)
{
  // earth's radius
  $radius = 3956;

  $latA = deg2rad($latA);
  $lonA = deg2rad($lonA);
  $latB = deg2rad($latB);
  $lonB = deg2rad($lonB);

  // calculate deltas
  $deltaLat = $latB - $latA;
  $deltaLon = $lonB - $lonA;

  // calculate Great Circle distance
  $result = pow(sin($deltaLatitude / 2.0), 2) + (cos($latA) * cos($latB) * pow(sin($deltaLon / 2.0), 2));
  $distance = $radius * 2 * atan2(sqrt($result), sqrt(1 - $result));

  return $distance;
}

// how can I call Distance() in my query?
$query = "SELECT lat, lon FROM zipcodes WHERE Distance(lat, lon, 0, 0) < 20";
mysql_query($query);

Заранее благодарим за любую помощь!

8
задан Problematic 26 August 2011 в 21:35
поделиться