0
這裏提取他們在SQL(SQL Server 2008中)上XQuerying問題而從XML數據的SQL Server
最初如何修改值,我有一個XML,我需要需要輸出有所不同,對於參考:
declare @XMLNODE table (id int identity, doc xml)
insert @XMLNODE (doc) values (
'
<Root>
<Elements>
<Items>
<OldItem>
<ID>1</ID>
<Show Pointer="yes" />
<Display Pointer="Display">
<Detail1>some Details</Detail1>
</DisplayDetails>
</OldItem>
</Items>
</Elements>
</Root>'
)
SELECT a.value('(ID)[1]','int') as ID,
a.value('(Show/@Pointer)[1]', 'varchar(5)') AS ShowItem,
a.value('Display[1]/@Pointer[1]="Display"', 'varchar(10)') as DisplayDetails, -- Set to 'true' or 'false'
a.value('DisplayDetails[1][@Pointer[1]="Display"]/Detail1[1]', 'varchar(max)') as Detail1
FROM @XMLNODE t
cross apply
t.doc.nodes('//OldItem') x(a)
FOR XML PATH ('Items'),
ROOT('Elements')
所以,現在我有一個這樣的XML:
<Elements>
<Items>
<ID>1</ID>
<ShowItem>yes</ShowItem>
<DisplayDetails>true</DisplayDetails>
<Detail1>some Details</Detail1>
</Items>
</Elements>
想添加一些修改此爲1或沒有價值的基礎上,如果這是真的/是等
即期望:
<Elements>
<Items>
<ID>1</ID>
<ShowItem>1</ShowItem>
<DisplayDetails>1</DisplayDetails>
<Detail1>some Details</Detail1>
</Items>
</Elements>
另外,如果<DisplayDetails>false</DisplayDetails>
我只是想更新到<DisplayDetails />
。
有沒有辦法直接比較查詢中的輸入(例如,是或否)並將其設置爲1或0而不是真或假?我正在使用.query來使用這些值並根據需要添加其他信息。
謝謝,我會嘗試根據需要嘗試修復它,如果我們可以在查詢SQL XML數據時在.query()中進行這種比較檢查,有什麼想法嗎?因爲我可以遍歷這些值,直接添加更多的XML數據等,只是不知道如何修改.query()中的XML ...... – 2011-04-20 16:29:07
就像我說的,我不查詢SQL XML非常很多,所以我對此有種限制。如果你遇到另一個問題,我只是在這個問題上添加評論,或者對你需要的具體信息提出不同的問題。 – AllenG 2011-04-20 16:38:32