2010-10-18 44 views
0

在我的SQL 2008數據庫表中,我有一個包含XML數據的列名AUTHOR。 XML格式不正確,數據如下如何從SQL服務器中格式不正確的XML數據中獲取所需的XML元素

<Author> 
<ID>172-32-1176</ID> 
<LastName>White</LastName> 
<FirstName>Johnson</FirstName> 
<Address> 
<Street>10932 Bigge Rd.</Street> 
<City>Menlo Park</City> 
<State>CA</State> 
</Address> 
</Author> 

某些XML有上述所有數據,有些只有一個標籤。

<ID>172-32-1176</ID> 

我想編寫查詢,返回一列作爲標識。 我嘗試使用AUTHOR.query('data(/ Author/ID)')作爲標識,但當XML沒有Author節點時失敗。

感謝, 維傑

回答

2

您是否嘗試過類似/Author/ID|/ID?即嘗試第一種情況,並且不匹配,第二種?

(注意|操作者是一組聯合操作,如所描述here

+0

+1良好的答案。 – 2010-10-18 22:26:52

+0

這工作:)謝謝 – user219628 2010-10-22 20:22:42

0

在情況下,沒有什麼「某些」可以保持有關XML,不同之處在於一個獨特ID元件包含所需標識值,那麼以下XPath表達式選擇ID元素:

//ID 
+0

這也工作。謝謝。 – user219628 2010-10-22 20:23:02

+0

你應該瞭解這個陳述的一件事是它表現不佳。如果你的文件很大,我會避免這種情況。 – 2010-11-05 22:53:19

+0

@ Eric-T:當然 - 我經常提到這一點。這就是爲什麼我說這隻能用於「如果沒有什麼」確定的「可以維護關於XML」 – 2010-11-05 23:17:23

相關問題