假设有以下XML数据,我想在工资中添加一个属性,例如$blogContainer.attr("data-page", nextPage).append($articles);
setStyles($articles); // <---
:
currency="INR"
如果此数据存储在类型为<employee>
<salary amount="6000"/>
</employee>
的列中,则只需使用以下代码段即可轻松添加另一个属性:
XML
,并且如果此数据存储在类型为UPDATE TABLENAME
SET COLUMNNAME.modify('insert attribute currency{"INR"} into (/employee/salary)[1]')
的列中,那么即使在将数据强制转换为nvarchar(max)
之后,以下查询也不起作用:
xml
所以,当我有一列作为nvarchar时,需要帮助我解决第二点,并且需要在保存的xml数据中插入一个属性。
答案 0 :(得分:4)
modify() Method
仅直接用于变量/列,并且只能在SET
子句中使用。
因此,要解决此问题,因为您将数据存储为NVARCHAR
,则有两种选择:
更改表并添加具有XML
数据类型的新列,将数据从列中移至该列,然后使用UPDATE
modify()
创建/声明一个表,以将数据存储为XML
并执行UPDATE
。
以下是您提供的示例:
CREATE TABLE T
(
Value NVARCHAR(MAX)
);
INSERT INTO T
SELECT N'<employee>
<salary amount="6000"/>
</employee>';
DECLARE @V XML;
SELECT @V = CAST(Value AS XML)
FROM T;
SET @V.modify('insert attribute currency{"INR"} into (/employee/salary)[1]');
UPDATE T
SET Value = CAST(@V AS NVARCHAR(MAX));
SELECT * FROM T;