在SQL Server中以XML格式存储数据的最佳方法是什么?

问题描述:

说我有数据结构存储为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

我发现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%'