插入空白 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
使用 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