Этот вопрос не должен быть вики сообщества. Переключите его, если можете. В любом случае, вот ваш ответ.
@ Quassnoi дал отличное решение для SQL 2008, но вы спрашиваете о 2003, не так ли? В 2003 году география не такая же, как в 2008 году. Тебе придется делать свою собственную, как я. Это не сложно, в зависимости от уровня точности, который вам требуется. Вот скалярная функция, которую я придумал на основе популярной формулы для вычисления расстояния между двумя наборами координат:
-- =====================================================================
-- Author: Byron Sommardahl
-- Create date: June 15, 2007
-- Description: Calculates the distance between two sets of coordinates.
-- ======================================================================
CREATE FUNCTION [dbo].[Distance]
(
@lat1 float,
@long1 float,
@lat2 float,
@long2 float
)
RETURNS float
AS
BEGIN
RETURN (3958*3.1415926*sqrt((@lat2-@lat1)*(@lat2-@lat1) + cos(@lat2/57.29578)*cos(@lat1/57.29578)*(@long2-@long1)*(@long2-@long1))/180);
END
GO
Чтобы использовать это, просто введите ваши координаты, используя SELECT:
SELECT dbo.Distance(MyPlace.Lat, MyPlace.Long, TheirPlace.Lat, TheirPlace.Long);
Тогда вы можете просто проверить, находится ли продукт в пределах определенного радиуса от вашего фокуса. Не совсем ограничивающий прямоугольник, но он заставляет вас двигаться в правильном направлении.