DB2到SQL LinkedServer OpenQuery NonAscii字符问题

所以我一直在寻找SO的答案,并且我已经看到一些很棒的SQL函数来帮助尝试从数据库中删除非ascii字符,但是我想先在此处发布整个问题/过程,看看是否可能从db2到sql的选择上游,有一个修复程序。

我正在做什么::将数据从db2数据库导入SQL

问题:非ASCII字符会引起问题

过程:这非常简单。我有一条SQL Insert语句,可以使用开放式查询从db2链接服务器中选择一堆列

insert into [table](stuff) select (stuff) From Openquery(SSF400,'select stuff from table')

但是,在我的SQL数据库中,当编辑着陆表时,我得到了奇怪的结尾字符,它们在sql select语句中显示为空格,但实际上是在SQL编辑模式下的工件:

DB2到SQL LinkedServer OpenQuery NonAscii字符问题

我尝试使用在SO上找到的一些功能来去除这些字符,但是在使用这些功能后,剩下的是希腊/英语字符的组合,如下所示:

DB2到SQL LinkedServer OpenQuery NonAscii字符问题

我认为除了使用openquery之外,我还必须有一种更好的方法来进行初始插入,以使垃圾字符不会出现。我非常了解SQL,但是DB2却不是那么多...有什么建议吗?

更新:源系统中似乎确实存在一两个垃圾字符。使用iNavigator发现。另外,源系统正在使用db2 v7r3m0

DB2到SQL LinkedServer OpenQuery NonAscii字符问题

更新,这是iNavigator中查询中使用的注释中提到的regexp表达式的屏幕截图。尽管删除了几个字符,但仍然保留了一些字符。原始列在左侧,清洗后的列在右侧。

DB2到SQL LinkedServer OpenQuery NonAscii字符问题

干杯, MD

taidengmeidian 回答:DB2到SQL LinkedServer OpenQuery NonAscii字符问题

我会尝试REGEXP_REPLACE(stuff,'[^\u0020-\u007E\u0009\u000A\u000D]+',''),它将从7位ASCII集中删除所有不是字符的内容,但也将除去制表符,换行和回车符之外的所有7位ASCII控制字符。它还会删除DEL

本文链接:https://www.f2er.com/2959076.html

大家都在问