sql >> Databasteknik >  >> RDS >> Sqlserver

Det gick inte att lägga till villkor i FOR XML-delen

Om jag förstår vad du menar, då om Col1 innehåller strängen "SUP", du vill ha denna tagg i din slutliga XML:

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

Annars vill du ha detta uttryck:

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

Jag tror att du kan få det med det här SQL-fragmentet:

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

Varför ditt inte fungerade:du kan inte göra namnet på en kolumn (eller på ett XML-element) villkorligt. Det närmaste du kan komma är att få det ena eller andra uttrycket att utvärderas till null, i vilket fall det inte kommer att renderas i den slutliga XML.




  1. Hur länkar jag C++ MySQL Connector Libraries till Cmake?

  2. Få oengagerad data i MySQL

  3. När misslyckas en PREPARE QUERY i PRO C?

  4. Hur undkommer man reserverade mysql-ord i fråga i php?