1. 데이터타입: geography
2. 저장:
INSERT INTO [테이블명] ([geography컬럼명]) values (geography::Point([위도], [경도], 4326));
-- 4326은 우리가 흔히 사용하는 좌표 CRS임
3. 문자열로 변환 조회
단, 이 경우 "POINT ([경도] [위도])" 형태로 반환되므로, 각각 decimal type의 컬럼으로 저장하는 편이 나았음 (다른 방법이 있을 수 있음)
SELECT convert(nvarchar(50), [geography컬럼명]) as [별칭] FROM [테이블명];
-- POINT ([경도] [위도])
4. 특정 위치를 기준으로 반경 5km 조회하기 - geography 타입을 사용한 이유
-- STDistance는 차이를 미터로 반환함
-- 1. 변수선언이 가능한 경우
DECLARE @Origin GEOGRAPHY
SET @Origin = GEOGRAPHY::Point([위도], [경도])
SELECT * FROM [테이블명] WHERE @Origin.STDistance([geography컬럼명]) <= (5 * 1000);
-- 2. DB에서 바로 조회할 경우.
SELECT * FROM [테이블명] WHERE (SELECT [geography컬럼명] FROM [테이블명] WHERE [관리키컬럼명]=[관리키]).STDistance([geography컬럼명]) <= (5 * 1000);
'DB > MSSQL' 카테고리의 다른 글
트리거 소스보기 (0) | 2016.10.31 |
---|---|
초간단 트리거 문법 (0) | 2016.08.24 |
테이블 명세서 쿼리문 (0) | 2014.09.23 |
0을 나누기 에러 대신 null 반환되도록 하기 (0) | 2014.09.19 |
숫자 앞에 0으로 채우기 (0) | 2014.09.04 |