【问题标题】:Unable to add condition in FOR XML part无法在 FOR XML 部分中添加条件
【发布时间】:2016-10-14 16:39:54
【问题描述】:

我在这个的帮助下生成了一个 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不正确

【问题讨论】:

  • 这些问题是什么?
  • @AndrewMorton 我已经添加了相关问题

标签: xml sql-server-2008 for-xml-path


【解决方案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 中呈现。

【讨论】:

  • 感谢您的回复。让我试试你的想法。
  • 对不起,我会在一两天内试试这个。我坚持其他一些任务。谢谢你的提问。对不起:(
猜你喜欢
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 2019-06-03
相关资源
最近更新 更多