Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tidak dapat menambahkan kondisi di bagian FOR XML

Jika saya mengerti apa yang Anda katakan, maka jika Col1 berisi string "SUP", Anda ingin tag ini dalam XML akhir Anda:

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

Jika tidak, Anda menginginkan ekspresi ini:

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

Saya pikir Anda bisa mendapatkannya dengan fragmen SQL ini:

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

Mengapa milik Anda tidak berfungsi:Anda tidak dapat membuat nama kolom (atau elemen XML) bersyarat. Yang paling dekat yang bisa Anda dapatkan adalah membuat satu atau ekspresi lain mengevaluasi ke nol, dalam hal ini tidak akan dirender dalam XML akhir.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih nilai dari bidang XML di SQL Server 2008

  2. Tidak dapat membuka tes basis data yang diminta oleh login. Login gagal. Login gagal untuk pengguna 'xyz\ASPNET'

  3. Pertanyaan Prosedur Tersimpan Sederhana

  4. Mengapa SQL Server mengabaikan ruang kosong di akhir secara otomatis?

  5. Bagaimana saya bisa terhubung ke SQL Server 2008 R2 dengan Django-mssql?