我有一個查詢在那裏我使用XML.modify
在SQL中插入一個新節點到我的XML文檔保存XML節點回
但是我打印此XML,我看到我的XML文檔更新,但沒有在節約我的數據庫
是否需要更新腳本才能使更改生效? (在數據庫中的列的類型文本,但我將它轉換成XML
我有一個查詢在那裏我使用XML.modify
在SQL中插入一個新節點到我的XML文檔保存XML節點回
但是我打印此XML,我看到我的XML文檔更新,但沒有在節約我的數據庫
是否需要更新腳本才能使更改生效? (在數據庫中的列的類型文本,但我將它轉換成XML
您可以修改列的地方是這樣的:
create table #t(id int, doc xml)
insert into #t(id,doc) values (1,'<a><b/></a>')
update #t set doc.modify('delete /a/b') where id = 1
select doc from #t
但是,如果你有文檔複製到一個變量,你「馬上有一個像這樣來更新它。
create table #t(id int, doc xml)
insert into #t(id,doc) values (1,'<a><b/></a>')
declare @doc xml = (select doc from #t where id =1)
set @doc.modify('delete /a/b')
update #t set doc = @doc where id = 1
select doc from #t
我是tr ying用更新語句重新插入我的列,但它給了我這個錯誤消息402,級別16,狀態1,行33 數據類型text和varchar(max)在等於運算符中不兼容。使用該命令 – abarz12
- >更新[DBO] [tbl_reports] \t \t \t \t \t \t組信息=鑄造(@xml爲varchar(最大值))\t \t \t \t \t \t \t其中信息=鑄造(@oldXML as varchar(max)) – abarz12
這可能是因爲列信息的類型爲'text',並且'數據類型text和varchar(max)在等於運算符中不兼容「。你爲什麼使用舊的'文本'數據類型? –
是,您需要UPDATE或INSERT是'XML.modify'只是讓一些計算上的XML值相同的方式,例如算術運算符'+'呢但爲了將新計算的值存儲在表中,您必須明確指示DBMS執行此操作。 – Serg