XML कॉलम में एकल प्रविष्टि को संपादित करने का सबसे सरल तरीका?


9

जैसा कि मैं समझता हूं कि एमएस SQL ​​सर्वर प्रबंधन स्टूडियो जीयूआई (कॉपी / पेस्ट काम नहीं करता है) के माध्यम से एक्सएमएल कॉलम में प्रविष्टियों को सीधे संपादित करने / बदलने की अनुमति नहीं देता है।

XML कॉलम में एकल प्रविष्टि को बदलने के लिए सबसे आसान विकल्प क्या है? क्या मुझे XML स्तंभ मान के लिए UPDATE / REPLACE से कुछ अलग उपयोग करना होगा?

जवाबों:


23

यदि आपको बस एक बार XML के पूरे टुकड़े को बदलने की आवश्यकता है, तो आप एक सामान्य अद्यतन कर सकते हैं, जैसे कुछ इस तरह से:

UPDATE yourTable
SET yourXML = '<yourNewValidXML/>' 
WHERE rowId = 1

यदि आपको व्यक्तिगत विशेषताओं या तत्वों को संपादित करने की आवश्यकता है तो आप एकल मानों को अद्यतन करने के लिए SQL सर्वर में XML डेटा-प्रकार की .modify विधि का उपयोग कर सकते हैं। आरंभ करने के लिए यहां एक सरल उदाहरण है:

DECLARE @t TABLE ( rowId INT IDENTITY PRIMARY KEY, yourXML XML )

INSERT INTO @t ( yourXML )
VALUES ( '<Users>
    <User Name="Bob"></User>
    <User Name="Mikhail"></User>
    <User Name="John"></User>
    <User Name="Sue"></User>
</Users>' )

SELECT 'before' s, DATALENGTH(yourXML) dl, yourXML
FROM @t
WHERE rowId = 1

-- Update one attribute
UPDATE @t
SET yourXML.modify('replace value of (Users/User/@Name[.="Bob"])[1] with "wBob"')
WHERE rowId = 1

SELECT 'after' s, DATALENGTH(yourXML) dl, yourXML
FROM @t
WHERE rowId = 1

यदि आपको अधिक सहायता की आवश्यकता है, तो कृपया अपने XML और अपने अपेक्षित परिणामों का एक छोटा सा नमूना पोस्ट करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.