sql >> Database teknologi >  >> RDS >> Sqlserver

Kan ikke tilføje betingelse i FOR XML-delen

Hvis jeg forstår, hvad du siger, så hvis Col1 indeholder strengen "SUP", du vil have dette tag i din endelige XML:

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

Ellers vil du have dette udtryk:

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

Jeg tror, ​​du kan få det med dette 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],
       ''

Hvorfor din ikke virkede:Du kan ikke gøre navnet på en kolonne (eller på et XML-element) betinget. Det tætteste du kan komme er at få det ene eller det andet udtryk til at evaluere til null, i hvilket tilfælde det ikke bliver gengivet i den endelige XML.




  1. Bedste alternativ til at indstille et PostgreSQL-skema ved hjælp af PHP PDO

  2. MySQL JOIN - Returner NULL for duplikerede resultater i venstre tabel

  3. Rails (postgres)-forespørgsel med jsonb-array

  4. SQL-forespørgsel få optællingselement til rapport pr. dag i måneden?