sql >> Database >  >> RDS >> Sqlserver

SQL Server FOR XML Pad maken herhalende knooppunten

Voeg een kolom toe met NULL als waarde om voor elke kolom een ​​apart itemknooppunt te genereren.

SELECT 
  t.col1 as 'item'
 ,NULL
 ,t.col2 as 'item'
 ,NULL
 ,t.col3 as 'item' 
FROM dbo.tbl as t 
FOR XML PATH('parent'), TYPE;

Resultaat:

<parent>
  <item>1</item>
  <item>2</item>
  <item>3</item>
</parent>

SQL Fiddle

Waarom werkt dit?

Kolommen zonder naam worden ingevoegd als tekstknooppunten. In dit geval wordt de NULL-waarde ingevoegd als een tekstknooppunt tussen het item knooppunten.

Als u werkelijke waarden toevoegt in plaats van NULL, ziet u wat er gebeurt.

SELECT 
  t.col1 as 'item'
 ,'1'
 ,t.col2 as 'item'
 ,'2'
 ,t.col3 as 'item' 
FROM dbo.tbl as t 
FOR XML PATH('parent'), TYPE;

Resultaat:

<parent>
  <item>1</item>1<item>2</item>2<item>3</item></parent>

Een andere manier om een ​​kolom zonder naam op te geven, is door het jokerteken * . te gebruiken als een kolomalias.

Kolommen met een naam gespecificeerd als jokerteken

Het is in dit geval niet nodig om het jokerteken te gebruiken omdat de kolommen met NULL-waarden geen kolomnaam hebben, maar het is handig wanneer u waarden uit werkelijke kolommen wilt, maar niet wilt dat de kolomnaam een ​​knooppuntnaam is.



  1. 5 SQL-syntaxis en queryprincipes voor betere databasebewaking

  2. Update met parameter met behulp van de permanente bibliotheek van de kamer

  3. Voeg meerdere rijen in met PDO voorbereide verklaringen

  4. hoe OperationalError op te lossen:(psycopg2.OperationalError) server heeft de verbinding onverwacht gesloten