Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 erstellt diesen XML-Code:
<ProductModel ProdModelID="19" Name="Mountain-100">
<Summary>
<SummaryDescription>
<Summary> element from XML stored in CatalogDescription column
</SummaryDescription>
</Summary>
</ProductModel>
Diese Abfrage generiert den gewünschten XML-Code. Die Abfrage identifiziert zwei Spaltengruppen mit 1 und 2 als Tag-Werte in den Spaltennamen.
Diese Abfrage verwendet die Query() -Methode (XML-Datentyp) des XML-Datentyps , um die CatalogDescription-Spalte des XML-Typs abzufragen, um die Zusammenfassungsbeschreibung abzurufen. Die Abfrage verwendet außerdem die Value() Method (xml Data Type) des XML-Datentyps , um den ProductModelID-Wert aus der Spalte "CatalogDescription" abzurufen. Dieser Wert ist im resultierenden XML-Code nicht erforderlich, ist jedoch erforderlich, um das resultierende Rowset zu sortieren. Daher enthält 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][Summary!2!SummaryDescription] nach xml-Typ 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 AdventureWorks2012;
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="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
(/PD:ProductDescription/@ProductModelID)[1]', 'int'),
CatalogDescription.query('
declare namespace pd="https://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>