2008-09-09 123 views
11

說我有數據結構存儲爲SQL Server中的XML(XML數據類型)。如果在數據中發現某個字符串,用戶希望提取記錄。在SQL Server中以XML格式存儲數據的最佳方法是什麼?

我有什麼選擇來實現它,哪個是最好的方法呢?

請注意,每條記錄可以具有不同的XML數據結構。

+0

@patrick答案是更好的,絕對。 – Will 2016-09-23 14:54:28

+0

我認爲這個問題被標記爲_later_問題的副本有點厚顏無恥...... – 2018-01-18 09:10:40

回答

3

我發現XQuery在SQL 2005中的支持非常有用。

-1

我認爲如果您認爲您需要定期搜索XML,則可以通過從XML中將一些字段提取到數據庫中自己的列中來節省很多痛苦。將XML存儲爲一段文本不是非常友好的數據庫 - 它不能被索引,緩存正確,或在複雜查詢中輕鬆使用。

-1

如果您的Xml是強類型的,就像在您有一個模式一樣,那麼使用XQuery的東西並在Xml列的頂部構建視圖。無論如何,強類型的東西都不是必需的,但它允許您以可預測的方式構建您的視圖。

5

您可以在不使用XQuery的情況下將XML轉換爲字符串,然後使用LIKE將其搜索爲字符串。但是作爲一個計算列不能是你需要用它在另一個選擇這樣的WHERE子句的一部分:

SELECT * FROM 
    (SELECT *, CONVERT(varchar(MAX), [XMLData]) as [XMLDataString] FROM [NamedTable]) irrelevant 
WHERE [XMLDataString] like '%SEARCH_STRING%' 
相關問題