DB2到SQL LinkedServer OpenQuery NonAscii字符问题

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

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

我在做什么:从db2数据库到SQL的数据获取>

问题:

引起问题的非ASCII字符

Process:

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

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

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

enter image description here

我尝试使用在SO上找到的一些功能来剥离这些字符,但是在使用这些功能后,剩下的是希腊/英语字符的组合,类似于以下内容:

enter image description here

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

更新:

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

enter image description here

Update

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

enter image description here

干杯,MD

因此,我一直在寻找SO的答案,我已经看到一些很棒的SQL函数来帮助尝试从数据库中删除非ascii字符,但是我想先在此处发布整个问题/过程,以了解...

sql db2 artifacts openquery
1个回答
0
投票

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

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