sql >> Database >  >> RDS >> Sqlserver

Kan voorwaarde niet toevoegen in FOR XML-gedeelte

Als ik begrijp wat je zegt, dan als Col1 bevat de string "SUP", u wilt deze tag in uw uiteindelijke XML:

<ss:Data ss:Type="String">SomethingContainingSup</ss:Data>

Anders wilt u deze uitdrukking:

<Data ss:Type="String">SomethingElse</Data>

Ik denk dat je dat kunt krijgen met dit SQL-fragment:

SELECT CASE WHEN COL1 LIKE '%SUP%' THEN 'String' END  as [Cell/ss:Data/@ss:Type],
       CASE WHEN Col1 Like '%SUP%' THEN Col1 END as [Cell/ss:Data], 
       CASE WHEN COL1 NOT LIKE '%SUP%' THEN 'String' END  as [Cell/Data/@ss:Type],                    
       CASE WHEN Col1 NOT Like '%SUP%' THEN Col1  END as [Cell/Data],
       ''

Waarom de jouwe niet werkte:je kunt de naam van een kolom (of van een XML-element) niet voorwaardelijk maken. Het dichtst dat u kunt krijgen, is om de ene of de andere expressie te laten evalueren tot null, in welk geval deze niet wordt weergegeven in de uiteindelijke XML.




  1. Oracle:'=ELK()' vs. 'IN ()'

  2. Hoger zoekresultaat met het DISTINCT-zoekwoord?

  3. PostgreSQL-aggregatiefunctie over bereik

  4. PostgreSQL:vul NULL-waarden in timeserie-query met vorige waarde