Beispiel: Angeben der HIDE-Direktive
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
In diesem Beispiel wird die Verwendung der HIDE -Direktive veranschaulicht. Diese Direktive ist nützlich, wenn die Abfrage ein Attribut zurückgeben soll, um die Zeilen in der universellen Tabelle zu sortieren, die von der Abfrage zurückgegeben wird, aber Sie möchten dieses Attribut nicht im endgültigen resultierenden XML-Dokument.
Diese Abfrage konstruiert diese XML-Ausgabe:
<ProductModel ProdModelID="19" Name="Mountain-100">
<Summary>
<SummaryDescription>
<Summary> element from XML stored in CatalogDescription column
</SummaryDescription>
</Summary>
</ProductModel>
Diese Abfrage generiert die gewünschte XML-Ausgabe. Die Abfrage identifiziert zwei Spaltengruppen, deren Spaltennamen die Tagwerte 1 und 2 aufweisen.
Diese Abfrage verwendet die query()-Methode (xml-Datentyp) vom Datentyp xml , um die CatalogDescription-Spalte vom Typ xml abzufragen und daraus die Zusammenfassungsbeschreibung abzurufen. Die Abfrage verwendet auch die value()-Methode (xml-Datentyp) vom Datentyp xml , um den ProductModelID-Wert aus der CatalogDescription-Spalte abzurufen. Dieser Wert ist im resultierenden XML-Code nicht erforderlich, ist jedoch erforderlich, um das resultierende Rowset zu sortieren. Deshalb beinhaltet der Spaltenname [Summary!2!ProductModelID!HIDE]
die HIDE -Direktive. Wenn diese Spalte nicht in der SELECT-Anweisung enthalten ist, müssen Sie das Rowset [ProductModel!1!ProdModelID]
nach xml-Typ [Summary!2!SummaryDescription]
sortieren, und Sie können die XML-Typspalte in ORDER BY nicht verwenden. Daher wird die zusätzliche [Summary!2!ProductModelID!HIDE]
Spalte hinzugefügt und dann in der ORDER BY-Klausel angegeben.
USE AdventureWorks2022;
GO
SELECT 1 as Tag,
0 as Parent,
ProductModelID as [ProductModel!1!ProdModelID],
Name as [ProductModel!1!Name],
NULL as [Summary!2!ProductModelID!hide],
NULL as [Summary!2!SummaryDescription]
FROM Production.ProductModel
WHERE CatalogDescription is not null
UNION ALL
SELECT 2 as Tag,
1 as Parent,
ProductModelID,
Name,
CatalogDescription.value('
declare namespace PD="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
(/PD:ProductDescription/@ProductModelID)[1]', 'int'),
CatalogDescription.query('
declare namespace pd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
/pd:ProductDescription/pd:Summary')
FROM Production.ProductModel
WHERE CatalogDescription is not null
ORDER BY [ProductModel!1!ProdModelID],[Summary!2!ProductModelID!hide]
FOR XML EXPLICIT;
GO
Dies ist das Ergebnis:
<ProductModel ProdModelID="19" Name="Mountain-100">
<Summary>
<SummaryDescription>
<pd:Summary xmlns:pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" xmlns="">
<p1:p xmlns:p1="http://www.w3.org/1999/xhtml">Our top-of-the-line competition mountain bike. Performance-enhancing options include the innovative HL Frame, super-smooth front suspension, and traction for all terrain. </p1:p>
</pd:Summary>
</SummaryDescription>
</Summary>
</ProductModel>
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für