SQL Server 中的条件 XML 修改



是否可以在这样的案例语句中使用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 引发此错误:

Msg 156,级别 15,状态 1,第 34
行 关键字"CASE"附近的语法不正确。

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

不能在空值上调用"列名"上的突变器"modify()"。

这是

不正确的语法。您可以改用 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;

最新更新