我正在尝试修改数据库中的某些XML值。我可以使用它来处理包含使用XML数据类型的XML的列。但是,我无法让它在TEXT列上工作。
另外,我可以在TEXT列上选择XML数据(通过使用CAST()将其转换为XML),但仍然无法更新。
示例:
UPDATE [xmltest]
SET [xmltext].modify('replace value of (/data/item[1]/text())[1] with "newvalue"')
错误:无法在文本上调用方法。
有什么方法可以让它在TEXT列上运行吗?已经存储了大量数据,因此我不必请求更改列上的数据类型。
谢谢!
Sunsu
答案 0 :(得分:11)
你不能直接修改它 - 你可以做的是一个三步过程:
这样的事情:
-- declare new local variable, load TEXT into that local var
DECLARE @temp XML
SELECT
@temp = CAST(YourColumn AS XML)
FROM
dbo.YourTable
WHERE
ID = 5 -- or whatever criteria you have
-- make your modification on that local XML var
SET
@temp.modify('replace value of (/data/item[1]/text())[1] with "newvalue"')
-- write it back into the table as TEXT column
UPDATE
dbo.YourTable
SET
YourColumn = CAST(CAST(@temp AS VARCHAR(MAX)) AS TEXT)
WHERE
ID = 5 -- or whatever criteria you have
它有点牵扯,但它有效! :-)