Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Không thể thêm điều kiện trong phần XML FOR

Nếu tôi hiểu bạn đang nói gì, thì nếu Col1 chứa chuỗi "SUP", bạn muốn thẻ này trong XML cuối cùng của mình:

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

Nếu không, bạn muốn biểu thức này:

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

Tôi nghĩ bạn có thể hiểu được điều đó với đoạn SQL này:

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

Tại sao của bạn không hoạt động:bạn không thể đặt tên của một cột (hoặc của một phần tử XML) có điều kiện. Cách gần nhất bạn có thể làm là làm cho một hoặc biểu thức khác được đánh giá thành null, trong trường hợp đó, nó sẽ không được hiển thị trong XML cuối cùng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận danh sách các bảng có hoặc không có Ràng buộc khóa chính trong tất cả Cơ sở dữ liệu từ Phiên bản SQL Server - Hướng dẫn SQL Server / TSQL Phần 61

  2. Làm thế nào để kết nối Cakephp 1.3 với MS SQLServer 2008?

  3. BẢNG ALTER trên cột phụ thuộc

  4. Điều gì xảy ra trong SQL 2005 khi nó hết số lượng cho một cột tự động đánh số?

  5. EF Code đầu tiên, làm thế nào để đăng ký cùng một tên bảng với các lược đồ khác nhau?