Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在MS SQL中使用XML更新一列中的多行_Sql Server_Xml_Sql Update - Fatal编程技术网

Sql server 在MS SQL中使用XML更新一列中的多行

Sql server 在MS SQL中使用XML更新一列中的多行,sql-server,xml,sql-update,Sql Server,Xml,Sql Update,我试图用每行XML文件更新所有(~50000)行的新增列“XML_File”,所以使用CASE,WHEN,THEN的解决方案是不合理的。 出于测试目的,我使用AdventureWorks2012。 为BusinessEntityID=1创建和保存XML而运行的代码: UPDATE [Person].[Password] SET [XML_File] = (SELECT [BusinessEntityID] ,[PasswordHash] ,[PasswordSalt

我试图用每行XML文件更新所有(~50000)行的新增列“XML_File”,所以使用CASE,WHEN,THEN的解决方案是不合理的。 出于测试目的,我使用AdventureWorks2012。 为BusinessEntityID=1创建和保存XML而运行的代码:

UPDATE [Person].[Password]
   SET [XML_File] = (SELECT [BusinessEntityID]
      ,[PasswordHash]
      ,[PasswordSalt]
      ,[rowguid]
      ,[ModifiedDate]
      ,[XML_File]
  FROM [Person].[Password]
WHERE BusinessEntityID = 1
FOR XML PATH('Summary'))
WHERE BusinessEntityID = 1
表视图:

创建的XML:

<Summary>
  <BusinessEntityID>1</BusinessEntityID>
  <PasswordHash>pbFwXWE99vobT6g+vPWFy93NtUU/orrIWafF01hccfM</PasswordHash>
  <PasswordSalt>bE3XiWw=</PasswordSalt>
  <rowguid>329EACBE-C883-4F48-B8B6-17AA4627EFFF</rowguid>
  <ModifiedDate>2003-02-08T00:00:00</ModifiedDate>
</Summary>

1.
pbFwXWE99vobT6g+vPWFy93NtUU/orrIWafF01hccfM
bE3XiWw=
329EACBE-C883-4F48-B8B6-17AA4627EFFF
2003-02-08T00:00:00
那么,有没有办法通过sql查询实现我的目标呢

UPDATE p
SET [XML_File] = (
    SELECT [BusinessEntityID]
         , [PasswordHash]
         , [PasswordSalt]
         , [rowguid]
         , [ModifiedDate]
    FOR XML PATH ('Summary')
)
FROM [Person].[Password] p