スキップしてメイン コンテンツに移動

投稿

ラベル(距離計算)が付いた投稿を表示しています

【sql server】距離が近い順にソートするクエリ(sql)

sql serverにはgeographyというカラムがいつの間にできてます。 これを利用すると特定位置から近い順にデータが読み込めます。 DECLARE @InputLatitude FLOAT = 40 . 7128 ; DECLARE @InputLongitude FLOAT = - 74 . 0060 ; SELECT TOP 50 * FROM YourTableName ORDER BY geographyColumn . STDistance (geography:: Point (@InputLatitude, @InputLongitude, 4326 )) ASC ; もしあなたから近いユーザーのリストが欲しい場合このようにクエリを書けばオッケーです。 しかしフィールドは? create table tUser ( uSn bigint identity( 1 , 1 ), uUid nvarchar( 200 ), uLoc geography, uLocText nvarchar( 200 ) ) このようにテーブルを作りました。位置情報はuLocTextに入れ、uLocにはgeography値を入れます。 declare @uLocText nvarchar( 200 ), @uSn bigint set @uLocText = ' 40.7128, -74.0060 ' set @uSn = 1 UPDATE tUser SET uLoc = geography:: Point (CAST( SUBSTRING (@uLocText, 1 , CHARINDEX( ' , ' , @uLocText) - 1 ) AS FLOAT), CAST( SUBSTRING (@uLocText, CHARINDEX( ' , ' , @uLocText) + 1 , LEN(@uLocText)) AS FLOAT), 4326 ) , uLocText = @uLocText where uSn = @uSnこ このように計算して入れたらuLocにはバイナリーコードのように入って目