sql >> Databáze >  >> RDS >> Sqlserver

Nelze přidat podmínku do části FOR XML

Pokud rozumím tomu, co říkáte, pak pokud Col1 obsahuje řetězec "SUP", chcete tuto značku ve svém konečném XML:

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

Jinak chcete tento výraz:

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

Myslím, že to můžete získat pomocí tohoto fragmentu SQL:

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],
       ''

Proč ten váš nefungoval:Název sloupce (nebo prvku XML) nemůžete podmínit. Nejblíže se můžete dostat k tomu, aby byl jeden nebo druhý výraz vyhodnocen jako null, v takovém případě nebude vykreslen ve finálním XML.




  1. Klauzule WHERE je lepší provést před IN a JOIN nebo po

  2. Určení, zda jsou pole Data v Oracle typu Number

  3. Návrh databáze – podmíněné hodnoty Null

  4. Použití SMO ke kopírování databáze a dat