Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nie można dodać warunku w części FOR XML

Jeśli rozumiem, co mówisz, to jeśli Col1 zawiera ciąg "SUP", chcesz, aby ten tag znalazł się w końcowym pliku XML:

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

W przeciwnym razie chcesz to wyrażenie:

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

Myślę, że możesz to uzyskać za pomocą tego 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],
       ''

Dlaczego twoja nie zadziałała:nie możesz uczynić nazwy kolumny (lub elementu XML) warunkową. Najbliżej, co można uzyskać, jest wykonanie jednego lub drugiego wyrażenia z wartością null, w którym to przypadku nie zostanie ono wyrenderowane w końcowym kodzie 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. Wdrażanie obciążenia przyrostowego za pomocą przechwytywania zmian danych w SQL Server

  2. Co to jest skalarny UDF w programie SQL Server?

  3. Nie można przejść do procedury składowanej na zdalnym serwerze SQL Server 2008

  4. nvarchar(max) vs NText

  5. Sprawdź, czy istnieje tabela tymczasowa i usuń, jeśli istnieje przed utworzeniem tabeli tymczasowej