2011-11-25 9 views

答えて

11

これはあなたが探している回答であるかどうかはわかりませんが、主な違いは「通常のフィールド」を更新するときに通常は新しい値を直接入力することです。たとえば、

UPDATE mytable SET name = 'John' WHERE id = 1 

ジオグラフィーの列を更新するときには、値を直接指定することはできません(ジオグラフィック情報をエンコードする非常に長い16進数なので、値を直接入力することはできません)。同じ表の列である必要はありません)。例:

UPDATE mytable SET gps=geography::STPointFromText('POINT(' + lng + ' ' + lat + ')', 4326) 

lngおよびlatは、人間が判読可能な形式(lat = '48.955790'lng = '20.524500'など)のGPS座標を指定するvarchar値です。この場合、これらの値もmytableの列です。以下に示すように

+0

おかげで、私はこれらの地理データ型が働いていたかわかりませんでした。どうやらSql Server 2008 R2のインポート/エクスポートウィザードは理解できません。この列を含むテーブルを別のデータベースにインポートすることはできません。 –

+0

私はこの答えに数年後に戻り、POINT()コールにLONGとLATのパラメータ順序を推測しました。これは正しい順序であり、興味深いことですが、MSがLONG/LATを使用するのは、私たちのほとんどが緯度/経度で表現する方法とは対照的です。詳細はこちらhttp://stackoverflow.com/q/27297113/194872 –

0

あなたは緯度と小数として経度を持っている場合、あなたは地理列を更新することができます。このため

DECLARE @latitude DECIMAL(15,6) 
    ,@longitude DECIMAL(15,6); 

SET @latitude = 29.938580; 
SET @longitude = -81.337384; 

UPDATE Properties 
SET Geog = GEOGRAPHY::Point(@latitude, @longitude, 4326) 
WHERE PropertyID = 858; 
関連する問題