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

Why would REGEXP_REPLACE throw an untranslatable character ? Is this a bug?

我有一个巨大的tabletestTable。我正在尝试通过仅保留字母和空格来清理 txt 列。

这就是我所做的

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

以上查询抛出 String contains an untranslatable character。我不知道它在哪一行失败,因为 table 很大。

当我将行数限制为某个较小的数字时,它起作用了,所以查询语法没问题。

 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 

但也遇到了同样的错误。

我们在年初遇到了同样的问题。 您可以使用 translate_chk 函数找到这些字符,其中 returns 0 if success else non zero character。 我们处理如下

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

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