說我有數據結構存儲爲SQL Server中的XML(XML數據類型)。如果在數據中發現某個字符串,用戶希望提取記錄。在SQL Server中以XML格式存儲數據的最佳方法是什麼?
我有什麼選擇來實現它,哪個是最好的方法呢?
請注意,每條記錄可以具有不同的XML數據結構。
說我有數據結構存儲爲SQL Server中的XML(XML數據類型)。如果在數據中發現某個字符串,用戶希望提取記錄。在SQL Server中以XML格式存儲數據的最佳方法是什麼?
我有什麼選擇來實現它,哪個是最好的方法呢?
請注意,每條記錄可以具有不同的XML數據結構。
我發現XQuery在SQL 2005中的支持非常有用。
我認爲如果您認爲您需要定期搜索XML,則可以通過從XML中將一些字段提取到數據庫中自己的列中來節省很多痛苦。將XML存儲爲一段文本不是非常友好的數據庫 - 它不能被索引,緩存正確,或在複雜查詢中輕鬆使用。
如果您的Xml是強類型的,就像在您有一個模式一樣,那麼使用XQuery的東西並在Xml列的頂部構建視圖。無論如何,強類型的東西都不是必需的,但它允許您以可預測的方式構建您的視圖。
您可以在不使用XQuery的情況下將XML轉換爲字符串,然後使用LIKE將其搜索爲字符串。但是作爲一個計算列不能是你需要用它在另一個選擇這樣的WHERE子句的一部分:
SELECT * FROM
(SELECT *, CONVERT(varchar(MAX), [XMLData]) as [XMLDataString] FROM [NamedTable]) irrelevant
WHERE [XMLDataString] like '%SEARCH_STRING%'
@patrick答案是更好的,絕對。 – Will 2016-09-23 14:54:28
我認爲這個問題被標記爲_later_問題的副本有點厚顏無恥...... – 2018-01-18 09:10:40