0

我正在寻找一个 SQL 查询,它可以删除所有非 xml 字符,即字符

#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] 

从我的行。

我可以使用http://www.simple-talk.com/sql/t-sql-programming/tsql-regular-expression-workbench/创建正则表达式替换用户定义的函数。但是我很难编写正则表达式来定位非 xml 字符。我正在使用 SQL Server 2008。

4

1 回答 1

0
[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD\u10000-\u10FFFF]

我是怎么做到的?

  • 在 .net 正则表达式引擎中,您可以将 Unicode 字符编码为 \uxxxx

  • 如果你放 ^ 你会创建一个否定字符类,这意味着它将匹配不在该列表中的所有内容(我假设你想要这个,但你的问题并不是 100% 清楚)

如果您用空字符串替换这些匹配项,您将过滤掉“非法”字符。

于 2012-06-14T21:32:45.033 回答