插入空白 XML 列

Insert to a blank XML column

使用 SQL Server 2019,尝试更新我们系统上的大量产品,使用原始代码,29k 行目前没有价值,此列存储在 XML 数据中,其他 XML 列确实有数据,这些数据会因产品而异。

我试过更新,效果很好,但在插入时失败了。

当前代码如下:

DECLARE @nameElement VARCHAR(30) = 'Origin';
UPDATE Products SET CustomColumns.modify('replace value of (/CustomColumnsCollection/CustomColumn[Name=sql:variable("@nameElement")]/Value/text())[1] with ("285")')WHERE ProductID = '001SP9000'

当前数据格式。

<CustomColumnsCollection>
  <CustomColumn>
    <Name>RequiresCore</Name>
    <DataType>5</DataType>
    <Value>False</Value>
  </CustomColumn>
  <CustomColumn>
    <Name>Core</Name>
    <DataType>4</DataType>
    <Value />
  </CustomColumn>
  <CustomColumn>
    <Name>Origin</Name>
    <DataType>4</DataType>
    <Value />
  </CustomColumn>
</CustomColumnsCollection>

我试过的Insert是:

UPDATE Products SET CustomColumns.modify('Insert (/CustomColumnsCollection/CustomColumn[Name=sql:variable("@nameElement")]/Value/text())[1] with ("285")')WHERE ProductID = '001SP9000'

如有任何指点或想法,我们将不胜感激。

现在解决了下面的问题。

DECLARE @nameElement VARCHAR(30) = 'Origin';
UPDATE dbo.Products
SET Customcolumns.modify('
        insert text{"248"}
        into ((/CustomColumnsCollection/CustomColumn[Name=sql:variable("@nameElement")]/Value))[1]
        ')
        WHERE ProductID = '001SP9000'
        and Customcolumns.value('(/CustomColumnsCollection/CustomColumn[Name=sql:variable("@nameElement")]/Value/text())[1]', 'nvarchar(30)') is null