我已经在此帮助下生成了一个FOR XML Link。 在解决方案中有一个条件
SELECT
'String' as [Cell/Data/@ss:Type],
[Col1] as [Cell/Data],
'',
'String' as [Cell/Data/@ss:Type],
[Col2] as [Cell/Data],
'',
我想为这部分添加一个条件 说
SELECT
CASE
WHEN COL1 LIKE '%SUP%'
THEN
'String' as [Cell/ss:Data/@ss:Type]
ELSE
'String' as [Cell/Data/@ss:Type]
END ,
[Col1] as [Cell/Data],
'',
但是我遇到了问题。 请帮助我。
上面的基本代码显示了语法错误。 如果我添加
SELECT
CASE
WHEN COL1 LIKE '%SUP%'
THEN
(SELECT 'String' as [Cell/ss:Data/@ss:Type])
ELSE
(SELECT 'String' as [Cell/Data/@ss:Type])
END ,
[Col1] as [Cell/Data],
'','
然后生成的XML不正确
答案 0 :(得分:1)
如果我理解您所说的内容,那么如果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中呈现。