DB2到SQL链接服务器OpenQuery非ASCI字符问题

DB2到SQL链接服务器OpenQuery非ASCI字符问题,sql,db2,artifacts,openquery,Sql,Db2,Artifacts,Openquery,所以我一直在寻找答案,我看到一些很棒的SQL函数可以帮助我尝试从数据库中删除非ascii字符,但我想先在这里发布整个问题/过程,看看我的select从db2到SQL的上游是否有修复方法 我在做什么:将db2数据库中的数据转换成SQL 问题:导致问题的非ascii字符 过程:非常简单。我有一个SQLINSERT语句,可以使用open查询从DB2LinkedServer中选择一组列 插入[表格](填充)从Openquery中选择(填充)(SSF400,'select stuff From table

所以我一直在寻找答案,我看到一些很棒的SQL函数可以帮助我尝试从数据库中删除非ascii字符,但我想先在这里发布整个问题/过程,看看我的select从db2到SQL的上游是否有修复方法

我在做什么:将db2数据库中的数据转换成SQL

问题:导致问题的非ascii字符

过程:非常简单。我有一个SQLINSERT语句,可以使用open查询从DB2LinkedServer中选择一组列

插入[表格](填充)从Openquery中选择(填充)(SSF400,'select stuff From table')

但是,在我的SQL db中,当编辑登录表时,我会得到奇怪的尾随字符,这些字符在SQL select语句中显示为空格,但实际上是SQL编辑模式下的工件:

我已经尝试使用我在这里找到的一些函数来剥离这些字符,但是在这些函数之后,我剩下了希腊/英语字符的组合,类似于下面的:

我在想,除了使用openquery,我必须有一种更好的方法来进行初始插入,这样垃圾字符就不会出现了。我非常了解SQL,但DB2不太了解……有什么建议吗

更新:源系统中似乎有一两个垃圾字符。使用iNavigator发现的。另外,源系统使用DB2V7R3M0

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

干杯,
MD

我会尝试
REGEXP\u REPLACE(填充“[^\u0020-\u007E\u0009\u000A\u000D]+”,“)
这将从7位ASCII集中删除所有非字符,但也会删除除制表符、新行和回车符之外的任何7位ASCII控制字符。它还删除了DEL

您的db2版本和平台是什么?您是否能够使用其他工具(一些db2客户机或使用db2 jdbc驱动程序的工具)检查这些垃圾字符是否真的在db2数据库的本列中,并且这不是使用openquery功能的结果?此外,源列和目标列的数据类型和字符集是什么<“代码>选择素材”本身并不特别有用。@从我使用iAvigator可以看出,as400使用的是v7r3m0。我用iNavigator在我的原始帖子中添加了一张图片,上面显示了我在DB2数据库中看到的内容,其中似乎有一两个古怪的字符。我之前没有完全扩展该列以了解这一点,抱歉。mustaccio源系统列被标识为CHAR(95)CCSID 37。当我在SQL中创建登录表时,我使用了相同的CHAR(95),但CCSID 37似乎是db2特定的语法,因此省略了该语法。源和目标的字符集是包含字母、数字和空格的产品编号(.例如,产品12345或ABC1234)尝试使用
REGEXP\u REPLACE(stuff,[^\x00-\x7F]','')删除非ascii字符,如果适合你的话。我试过这个,但在iNavigator中运行这个时,得到了类似的时髦角色的结果。