我有一张巨大的桌子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
但也得到了同样的错误。
答案 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。 希望它有所帮助..