기본 콘텐츠로 건너뛰기

라벨이 mssql인 게시물 표시

sql server로 거리 기반 정렬 및 거리 계산

geography 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),