私はこれが死んだ馬のように打ち負かされたことを知っています。ただし、どのようにスライス、キャスト、または変換しても、同じ問題があります。データ型 varchar から数値への変換中にエラーが発生しました。
SELECT property_id, property_case_number, property_address, property_city,
property_state, property_zip, property_lon, property_lat
FROM property
WHERE (property_active = 1)
AND
(property_county = (SELECT property_county FROM property AS property_1
WHERE (property_id = 9165)))
AND
(property_id <> 9165)
AND
property_lon IS NOT Null
AND
property_lat IS NOT Null
AND
dbo.LatLonRadiusDistance(
CONVERT(DECIMAL(15,12),(select property_lat from property where property_id = 9165)),
CONVERT(DECIMAL(15,12),(select property_lon from property where property_id = 9165)),
property_lat,property_lon) <= '5'
最後に dbo.LatLonRadiusDistance を追加するとすぐに、この問題に遭遇します。
dbo.LatLonRadiusDistance は、緯度と経度の距離をマイルで比較します。
FUNCTION [dbo].[LatLonRadiusDistance]
(
@lat1Degrees decimal(15,12),
@lon1Degrees decimal(15,12),
@lat2Degrees decimal(15,12),
@lon2Degrees decimal(15,12)
)
RETURNS decimal(9,4)
AS
BEGIN
DECLARE @earthSphereRadiusKilometers as decimal(10,6)
DECLARE @kilometerConversionToMilesFactor as decimal(7,6)
SELECT @earthSphereRadiusKilometers = 6366.707019
SELECT @kilometerConversionToMilesFactor = .621371
-- convert degrees to radians
DECLARE @lat1Radians decimal(15,12)
DECLARE @lon1Radians decimal(15,12)
DECLARE @lat2Radians decimal(15,12)
DECLARE @lon2Radians decimal(15,12)
SELECT @lat1Radians = (@lat1Degrees / 180) * PI()
SELECT @lon1Radians = (@lon1Degrees / 180) * PI()
SELECT @lat2Radians = (@lat2Degrees / 180) * PI()
SELECT @lon2Radians = (@lon2Degrees / 180) * PI()
-- formula for distance from [lat1,lon1] to [lat2,lon2]
RETURN ROUND(2 * ASIN(SQRT(POWER(SIN((@lat1Radians - @lat2Radians) / 2) ,2)
+ COS(@lat1Radians) * COS(@lat2Radians) * POWER(SIN((@lon1Radians - @lon2Radians) / 2), 2)))
* (@earthSphereRadiusKilometers * @kilometerConversionToMilesFactor), 4)
END
きっと何かの縁ですよね
(select property_lat from property where property_id = 9165)
しかし、どのようにキャストまたは変換しても、状況は変わりません。
関数を単独で実行しても、エラーは発生しません。
誰にも洞察がありますか?
ここにサンプル行があります
8462 023-125514 15886 W MOHAVE ST GOODYEAR AZ 85338-0000 -112.400297000000 33.429041000000
property_lat と property_lon は varchar(50) です