XML sütununda tek girişi düzenlemenin en kolay yolu?


9

Anladığım kadarıyla MS SQL Server Management Studio, GUI aracılığıyla XML sütunlarındaki girişlerin doğrudan düzenlenmesine / değiştirilmesine izin vermiyor (kopyala / yapıştır çalışmıyor).

XML sütununda tek bir girdiyi değiştirmek için en kolay seçenek nedir? XML sütun değeri için UPDATE / REPLACE dışında bir şey kullanmam gerekiyor mu?

Yanıtlar:


23

Tüm XML parçasını bir kerede değiştirmeniz gerekiyorsa, normal bir GÜNCELLEME yapabilirsiniz, örneğin böyle bir şey:

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

Tek tek öznitelikleri veya öğeleri düzenlemeniz gerekiyorsa, tek bir değeri güncellemek için SQL Server'daki XML veri türünün .modify yöntemini kullanabilirsiniz. Başlamanız için basit bir örnek:

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

Daha fazla yardıma ihtiyacınız varsa, lütfen XML'nizin küçük bir örneğini ve beklenen sonuçlarınızı gönderin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.