Eine ungültige Gleitkomma-operation aufgetreten. SQL Server 2008
Ich habe seltsame problem mit diesem code: wenn ich ihn wie unten gezeigt, bekomme ich Fehler:
Eine ungültige Gleitkomma-operation aufgetreten.
Aber, wenn ich parameter ändern @Longitude
zu -98.508730 (beachten Sie nur die Letzte Ziffer geändert) code funktioniert Prima.
Code-soll-Listen-Eigenschaften in @MilesRadius
um einige LatLng Punkt.
@Latitude und @Längen-Parameter sind vom gleichen Typ wie die Felder Längengrad und Breitengrad in der Tabelle Adresse.
Was kann ich hier tun? Danke.
DECLARE @Latitude decimal (10,6);
DECLARE @Longitude decimal (10,6);
DECLARE @MilesRadius int;
SET @Latitude = 29.607654
SET @Longitude = -98.508731
SET @MilesRadius = 5
SELECT ADR.LineOne as address,
ADR.City as city,
ADR.Latitude as latitude,
ADR.Longitude as longitude,
((3959 * acos(cos(radians(@Latitude)) * cos(radians(ADR.Latitude)) * cos(radians(ADR.Longitude) - radians(@Longitude)) + sin(radians(@Latitude)) * sin(radians(ADR.Latitude))))) as distance
FROM Shared.Address ADR
WHERE ADR.Latitude IS NOT NULL AND
ADR.Longitude IS NOT NULL AND
(3959 * acos(cos(radians(@Latitude)) * cos(radians(ADR.Latitude)) * cos(radians(ADR.Longitude) - radians(@Longitude)) + sin(radians(@Latitude)) * sin(radians(ADR.Latitude)))) < @MilesRadius
ORDER BY distance
- Ihnen fehlt der Teil der Abfrage, wo Sie Variablen deklarieren, fügen Sie bitte, dass auf Ihre Frage
- Ich habe. Sorry vergessen. Die Parameter Breite und Länge sind von der gleichen Art wie Längen-und Breitengrad-Felder in die Adresse-Tabelle. Decimal(10,6)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur die Funktion, die Sie verwenden, liefert einen domain-Fehler ist
ACOS
und tritt ein, wenn die Eingabe nicht in dem Bereich-1 to +1
so können Sie einfach hantieren dies der Fall ist (ich gehe davon aus, dass die intermediate-Ausdruck ist so etwas wie1.000000000001
aufgrund von Rundungsfehlern)