在 Informatica 中删除或替换“�”字符

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

我们有一个要求,需要替换或删除源代码中存在的“�”字符(这是一个无法识别、未定义的字符)。在运行我的工作流程时,它运行成功,但是当我检查目标中的记录时,它们没有提交。我在 Informatica 中收到以下错误

执行记录 37 的查询时出错:6706:字符串包含不可翻译的字符。

我尝试了诸如replace_chr、reg_replace、replace_str等函数,但似乎都不起作用。请建议如何摆脱这个问题。非常感谢任何回复。

replace character informatica
4个回答
0
投票

您需要在模式定义中使用 charset=> utf8-unidode-ci

但现在你可以做:

UPDATE tablename
SET columnToCheck = REPLACE(CONVERT(columnToCheck USING ascii), '?', '')
WHERE ...

update tablename
set columnToCheck = replace(columnToCheck , char(146), '');

替换 MYSQL 中的非 ASCII 字符


0
投票


您可以替换表达式转换中的特殊字符。

REPLACESTR(1,Column_Name,'?',NULL)

REPLACESTR - 功能
1 - 位置
Column_Name - 具有特殊字符的列名称
- 特殊字符
NULL - 替换字符


0
投票

您需要使用连接上定义的适当字符集来获取行。您使用的是什么连接,ODBC 还是本机?数据库是什么?


0
投票

特殊字符是一个挑战,检查了informatica网络后,我可以看到有一个混杂涉及replace_str首先将变量设置为所有非特殊字符的字符串,然后在replace_str中使用结果变量,以便最终值只有允许的字符https://network.informatica.com/thread/20642(nico 提供了很棒的解决方法,只要您能够明确识别应该允许的每个字符)...

作为替代的拼凑,我也会尝试在映射中的某处使用 xml 转换,因为 informatica 可以方便地将特殊字符转换为编码(我不记得的十进制或十六进制)值...只要您可以接受这些出现在你的目标文本应该没问题(并在字符串中构建一些额外的空间以容纳额外字符带来的任何膨胀

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