Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Bir XML örneğinden düğümleri siler.
Sözdizimi
delete Expression
Arguments
İfade
Silecek düğümleri tanımlayan bir XQuery ifadesidir. İfade tarafından seçilen tüm düğümler ve seçilen düğümler içinde bulunan tüm düğümler veya değerler silinir.
Insert (XML DML) bölümünde açıklandığı gibi, bu belgedeki mevcut bir düğüme referans olmalıdır. Yapılanmış bir düğüm olamaz. İfade kök (/) düğümü olamaz. Eğer ifade boş bir dizi döndürürse, silme olmaz ve hata döner.
Örnekler
A. Tiplenmemiş bir xml değişkeninde saklanan bir belgeden düğümlerin silinmesi
Aşağıdaki örnek, bir belgeden çeşitli düğümlerin nasıl silineceğini göstermektedir. İlk olarak, bir XML örneği xml tipindeki değişkene atanır. Sonrasında, sonraki silme XML DML ifadeleri belgeden çeşitli düğümleri siler.
DECLARE @myDoc XML
SET @myDoc = '<?Instructions for=TheWC.exe ?>
<Root>
<!-- instructions for the 1st work center -->
<Location LocationID="10"
LaborHours="1.1"
MachineHours=".2" >Some text 1
<step>Manufacturing step 1 at this work center</step>
<step>Manufacturing step 2 at this work center</step>
</Location>
</Root>'
SELECT @myDoc
-- delete an attribute
SET @myDoc.modify('
delete /Root/Location/@MachineHours
')
SELECT @myDoc
-- delete an element
SET @myDoc.modify('
delete /Root/Location/step[2]
')
SELECT @myDoc
-- delete text node (in <Location>
SET @myDoc.modify('
delete /Root/Location/text()
')
SELECT @myDoc
-- delete all processing instructions
SET @myDoc.modify('
delete //processing-instruction()
')
SELECT @myDoc
B. Tiplenmemiş bir xml sütununda saklanan bir belgeden düğümleri silme
Aşağıdaki örnekte, silme XML DML ifadesi, sütunda saklanan belgeden ikinci çocuk öğesini kaldırır <Features> .
CREATE TABLE T (i INT, x XML)
GO
INSERT INTO T VALUES(1,'<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>')
GO
-- verify the contents before delete
SELECT x.query(' //ProductDescription/Features')
FROM T
-- delete the second feature
UPDATE T
SET x.modify('delete /Root/ProductDescription/Features/*[2]')
-- verify the deletion
SELECT x.query(' //ProductDescription/Features')
FROM T
Önceki sorgudan aşağıdakilere dikkat edin:
modify() Yöntemi (xml Veri Türü),silme XML DML anahtar kelimesini belirtmek için kullanılır.
Belgeyi sorgulamak için query() Yöntemi (xml Veri Tipi ) kullanılır.
C. Tiplenmiş bir xml sütunundan düğümlerin silinmesi
Bu örnek, tiplenmiş bir xml sütununda saklanan üretim talimatları XML belgesinden düğümleri siler.
Örnekte, önce AdventureWorks veritabanında bir xml sütunuyla bir tablo (T) oluşturuyorsunuz. Daha sonra ProductModel tablosunun Talimatlar sütunundan bir üretim talimatları XML örneğini tablo T'ye kopyalayıp belgeden bir veya daha fazla düğümü siliyorsunuz.
USE AdventureWorks2022;
GO
DROP TABLE T
GO
CREATE TABLE T(
ProductModelID INT PRIMARY KEY,
Instructions XML (Production.ManuInstructionsSchemaCollection))
GO
INSERT T
SELECT ProductModelID, Instructions
FROM Production.ProductModel
WHERE ProductModelID = 7
GO
SELECT Instructions
FROM T
--1) insert <Location 1000/>. Note: <Root> must be singleton in the query
UPDATE T
SET Instructions.modify('
DECLARE namespace MI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
INSERT <MI:Location LocationID="1000" LaborHours="1000" >
These are manu steps at location 1000.
<MI:step>New step1 instructions</MI:step>
Instructions for step 2 are here
<MI:step>New step 2 instructions</MI:step>
</MI:Location>
AS first
INTO (/MI:root)[1]
')
GO
SELECT Instructions
FROM T
-- delete an attribute
UPDATE T
SET Instructions.modify('
declare namespace MI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
delete(/MI:root/MI:Location[@LocationID=1000]/@LaborHours)
')
GO
SELECT Instructions
FROM T
-- delete text in <location>
UPDATE T
SET Instructions.modify('
declare namespace MI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
delete(/MI:root/MI:Location[@LocationID=1000]/text())
')
GO
SET Instructions
FROM T
-- delete 2nd manu step at location 1000
UPDATE T
SET Instructions.modify('
declare namespace MI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
delete(/MI:root/MI:Location[@LocationID=1000]/MI:step[2])
')
GO
SELECT Instructions
FROM T
-- cleanup
DROP TABLE T
GO
Ayrıca Bkz.
Türlü XML'i Türsüz XML ile Karşılaştır
XML Verisi Örnekleri Oluşturmak
xml Veri Türü Yöntemleri
XML Veri Değiştirme Dili (XML DML)