【问题标题】:Conditional XML Modify in SQL ServerSQL Server 中的条件 XML 修改
【发布时间】:2019-05-25 15:01:30
【问题描述】:

是否可以在这样的 case 语句中使用 XML.modify 或者这必须是 2 个单独的更新语句?

UPDATE s
SET     
   CASE WHEN [XMLData] IS NOT NULL THEN [XMLData].modify('delete //invoice/account/contactinformation') END,
   CASE WHEN [SummaryXMLData] IS NOT NULL THEN [SummaryXMLData].modify('delete //invoice/account/contactinformation') END 
FROM   
    ITS_CSC.[Statement].[StatementSummary] s    

SQL Server 抛出此错误:

消息 156,第 15 级,状态 1,第 34 行
关键字“CASE”附近的语法不正确。

注意:直接在 NULL 值上调用 modify 方法失败并显示以下消息,因此需要检查 NULLs

'column name' 上的 Mutator 'modify()' 不能在 null 值上调用。

【问题讨论】:

    标签: sql sql-server xml tsql sql-server-2012


    【解决方案1】:

    语法不正确。您可以改用 2 个单独的语句:

    UPDATE ITS_CSC.[Statement].[StatementSummary]
    SET  [XMLData].modify('delete //invoice/account/contactinformation') 
    WHERE [XMLData] IS NOT NULL;
    
    UPDATE ITS_CSC.[Statement].[StatementSummary]
    SET [SummaryXMLData].modify('delete //invoice/account/contactinformation')
    WHERE [SummaryXMLData] IS NOT NULL;
    

    【讨论】:

      猜你喜欢
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 2018-04-28
      • 2014-01-27
      相关资源
      最近更新 更多