从字符串中提取日期时不可翻译的字符

时间:2017-07-20 13:36:32

标签: regex teradata

我正在尝试从自由文本字段中提取日期(因为我们的过程非常棒:\)并且继续遇到Teradata错误6706.我正在使用的正则表达式是:REGEXP_SUBSTR(original_field,'(\d{2})\/(\d{2})\/(\d{4})',1) AS new_field。我不确定字段的类型HELP TABLE在字段的“类型”列中是否有空白。

我已经尝试使用TRANSLATE(col USING LATIN_TO_UNICODE)以及UNICODE_TO_LATIN进行转换,这两者实际上都会导致错误。直接CAST(original_field AS VARCHAR(255))不能解决问题,尽管该演员阵容确实有效。我还尝试从场上剥离各种特殊字符(新线,回车等),然后让REGEXP_SUBSTR对它进行破解,既可以自己也可以使用CAST&翻译我已经提到过。

此时我不确定问题是什么,并且可以使用其他选项的一些指导来尝试。

1 个答案:

答案 0 :(得分:0)

最终版本最终成为了

, CASE
    WHEN TRANSLATE_CHK(field USING LATIN_TO_UNICODE) = 0 THEN
        REGEXP_SUBSTR(TRANSLATE(field USING LATIN_TO_UNICODE),'(\d{2})\/(\d{2})\/(\d{4})',1)
    ELSE NULL
END AS Ref_Date

无论出于何种原因,在TRIM内使用TRANSLATE似乎会导致问题。只有在我对TRANSLATE内的任何和所有函数进行条带化后,TRANSLATE才会执行,REGEXP_SUBSTR才能正常工作。