2011-11-25 13 views
6

क्या नियमित क्षेत्र (वर्कर ....) से एसक्यूएल सर्वर में भूगोल कॉलम अपडेट करना अलग है। क्या आप इसे करने के लिए नमूना कथन प्रदान कर सकते हैं। धन्यवाद।अपडेट स्टेटमेंट- भूगोल कॉलम - एसक्यूएल सर्वर

उत्तर

11

मुझे यकीन नहीं है कि यह वह उत्तर है जिसे आप ढूंढ रहे हैं - लेकिन जैसा कि मैं कहूंगा, मुख्य अंतर यह है कि "नियमित क्षेत्र" को अपडेट करते समय, आप आम तौर पर सीधे नया मान प्रदान करते हैं - उदाहरण के लिए:

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

भूगोल कॉलम अपडेट करते समय, आप शायद मूल्य प्रदान नहीं कर सकते हैं (क्योंकि यह एक बहुत लंबा हेक्साडेसिमल नंबर है, जो भूगर्भीय जानकारी को एन्कोड करता है) लेकिन आप इसे कुछ अन्य मानों से गणना करना चाहते हैं (जो कर सकते हैं, लेकिन एक ही टेबल के कॉलम होने की आवश्यकता नहीं है), उदाहरण:

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

जहां lng और lat "मानव-पठनीय" प्रारूप (जैसे lat = '48.955790', lng = '20.524500') में जीपीएस निर्देशांक निर्दिष्ट करने वाले वर्चर्स मान हैं - इस मामले में वे mytable के कॉलम भी हैं।

+0

इस के लिए धन्यवाद, मैं पता नहीं कैसे इन भूगोल डेटा प्रकार काम किया था। जाहिर है एसक्यूएल सर्वर 2008 आर 2 में आयात/निर्यात विज़ार्ड या तो समझ में नहीं आता है - यह मुझे इस कॉलम वाले किसी तालिका को किसी अन्य डेटाबेस में आयात करने नहीं देगा। –

+0

मैं बाद में इस उत्तर में वापस आया और दूसरे ने लंबे समय तक POINT() कॉल को 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; 
संबंधित मुद्दे