Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Не може да се добави условие в частта FOR XML

Ако разбирам какво казвате, тогава ако Col1 съдържа низа "SUP", искате този етикет във вашия окончателен XML:

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

В противен случай искате този израз:

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

Мисля, че можете да го получите с този 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],
       ''

Защо вашият не работи:не можете да направите името на колона (или на XML елемент) условно. Най-близкото, което можете да получите, е да накарате един или друг израз да се изчисли като null, в който случай няма да бъде изобразен в крайния XML.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да преобразувам формата на системната дата в дд/мм/гг в SQL Server 2008 R2?

  2. Мигриране на база данни на Microsoft Access към SQL Server

  3. Sql Server Profiler Безплатен инструмент

  4. Пуснете таблицата, след което не можете да създадете отново таблица със същото име

  5. конвертиране на sql server rowversion в long или ulong?