在SQL Server中以XML格式存储数据的最佳方法是什么?
问题描述:
说我有数据结构存储为SQL Server中的XML(XML数据类型)。如果在数据中发现某个字符串,用户希望提取记录。在SQL Server中以XML格式存储数据的最佳方法是什么?
我有什么选择来实现它,哪个是最好的方法呢?
请注意,每条记录可以具有不同的XML数据结构。
答
我认为如果您认为您需要定期搜索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