为什么REGEXP_REPLACE会抛出一个不可翻译的字符?这是一个错误吗?

时间:2015-10-20 03:39:05

标签: teradata

我有一张巨大的桌子testTable。我只想留下字母和空格来清理txt列。

这是我做的事情

SELECT id_cd, REGEXP_REPLACE(txt, '[^a-zA-Z ]', '', 1, 0, 'i') new_txt 
FROM testTable 

以上查询引发String contains an untranslatable character。我不知道它失败了哪一行因为表格很大。

当我将行数限制为某个较小的数字时,它可以正常工作,因此查询语法很好。

 SELECT TOP 10 id_cd, REGEXP_REPLACE(txt, '[^a-zA-Z ]', '', 1, 0, 'i') new_txt 
 FROM testTable 

这是一个错误吗?我如何发现失败的行?为什么它会在一开始就失败?

我也尝试了以下内容:

SELECT id_cd, REGEXP_REPLACE(TRANSLATE(txt using unicode_to_latin), '[^a-zA-Z ]', '', 1, 0, 'i') new_txt 
 FROM testTable 

但也得到了同样的错误。

1 个答案:

答案 0 :(得分:2)

我们在年初有同样的问题。 您可以使用translate_chk函数找到这些字符,如果成功,则返回0非零字符。 我们处理如下

case when  translate_chk(d.column using  latin_to_unicode)  <> '0'
  then 0
  else Instr(d.column  , 'E3S')
  end column

但是在那种情况下我们并不关心丢失的数据,我们为此加载了0。 希望它有所帮助..