是否可以在这样的case语句中使用xml.modify,或者这必须是两个单独的update语句?

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”附近的语法不正确。
注意:直接对modify值调用NULL方法失败,并显示以下消息,因此需要检查NULLs
不能对空值调用“column name”上的mutator“modify()”。

最佳答案

这是不正确的语法。您可以使用两个单独的语句:

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;

关于sql - SQL Server中的条件XML修改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53947467/

10-10 11:31