我有一個程序,它將XML數據插入到SQL Server中的XML列中,並且我發現SQL Server在插入時正在更改源XML數據的格式。這使得以後使用相同的源XML來查詢數據變得非常困難。插入XML到SQL Server數據庫,然後查詢它
例如,一個非常簡單的演示是爲了說明問題:
INSERT INTO XMLRecord (XMLData) VALUES ('<Test></Test>')
Select * from XMLrecord
返回:
<Test />
現在,如果我嘗試運行一個查詢,看看我最初的XML中存在數據庫:
select count (*) as 'Count' from XMLRecord where cast (XMLData AS NVARCHAR(MAX)) = '<Test></Test>'
0 rows returned;
但是,如果源XML不包含「空」標記,那麼插入和搜索工作fi NE:
INSERT INTO XMLRecord (XMLData) VALUES ('<Test>Test Values</Test>')
Select * from XMLrecord
返回:
<Test>Test Values</Test>
現在,如果我嘗試運行一個查詢,看看我最初的XML數據庫中存在:
select count (*) as 'Count' from XMLRecord where cast (XMLData AS NVARCHAR(MAX)) = '<Test>Test Values</Test>'
1 rows returned;
我希望有人能協助解決如何讓這個工作。如何獲取源XML塊(未知大小,內容等),將其插入數據庫,然後在數據庫中查詢我剛插入的XML上的EXACT匹配項。
數據需要以XML格式存儲在數據庫中,因爲我也將它用於許多其他xQuery。
非常感謝。
如果要匹配確切的字符串,則需要將該值存儲爲字符串而不是XML。您仍然可以將其轉換爲XQuery的XML。 – 2015-04-05 01:29:29