SQL Server中从NVARCHAR删除所有“ InvalidXMLCharacters”的有效方法

问题描述 投票:0回答:1

作为this answer的一部分,我确定可能破坏OLAP多维数据集的一件事是向其中馈送包含被视为“ InvalidXMLCharacters”的字符的值(在维名称/值/等中)。现在,我想过滤掉这些值,以便它们永远不会出现在我用SQL构建的OLAP多维数据集中。我经常发现自己将输入数据从一个表导入另一个表。类似于以下内容:

INSERT INTO [dbo].[DestinationTableThatWillBeReferencedInMyOLAPCube]
SELECT TextDataColumn1, TextDataColumn2, etc... 
FROM [dbo].[SourceTableContainingColumnsWithValuesWithInvalidXMLCharacters]
WHERE XYZ...

是否有一种有效的方法可以从此查询的列中删除所有“ InvalidXMLCharacters”?

想到的显而易见的解决方案将是某种Regex,尽管从前面所述的链接文章中来看,这可能非常复杂,并且我不确定这对性能的影响。

[我的另一个想法是将列转换为“ XML”数据类型,但是如果它们包含无效字符,则将出错,这对于删除它们不是很有帮助...

我环顾四周,并且没有看到其他许多情况下开发人员试图做到这一点,在我未发现的另一篇文章中是否以其他方式解决了该问题?

sql sql-server xml tsql olap
1个回答
0
投票

。NET CLR与SQL Server的集成可能会有所帮助。这是一个适合您的c#示例。您可以将其用作满足您需求的起点。它最重要的一行是使用XmlConvert.IsXmlChar(ch)调用来删除无效字符。

c#

© www.soinside.com 2019 - 2024. All rights reserved.