Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Det här exemplet illustrerar användningen av HIDE-direktivet . Det här direktivet är användbart när du vill att frågan ska returnera ett attribut för att sortera raderna i den universella tabellen som returneras av frågan, men du inte vill att attributet ska visas i det slutliga resulterande XML-dokumentet.
Den här frågan konstruerar den här XML:en:
<ProductModel ProdModelID="19" Name="Mountain-100">
<Summary>
<SummaryDescription>
<Summary> element from XML stored in CatalogDescription column
</SummaryDescription>
</Summary>
</ProductModel>
Den här frågan genererar den XML du vill använda. Frågan identifierar två kolumngrupper med 1 och 2 som taggvärden i kolumnnamnen.
Den här frågan använder metoden query() (xml Data Type) för xml-datatypen för att köra frågor mot kolumnen CatalogDescription av xml-typ för att hämta sammanfattningsbeskrivningen. Frågan använder också metoden value() (xml Data Type) för xml-datatypen för att hämta värdet ProductModelID från kolumnen CatalogDescription. Det här värdet krävs inte i den resulterande XML-koden, men krävs för att sortera den resulterande raduppsättningen. Därför innehåller kolumnnamnet , [Summary!2!ProductModelID!HIDE]HIDE-direktivet. Om den här kolumnen inte ingår i SELECT-instruktionen, måste du sortera raduppsättningen efter [ProductModel!1!ProdModelID] och [Summary!2!SummaryDescription], som är av typen xml, och du kan inte använda xml-typkolumnen i ORDER BY. Därför läggs den extra [Summary!2!ProductModelID!HIDE] kolumnen till och anges sedan i ORDER BY-satsen.
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
Det här är resultatet:
<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>