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.