Oracle SQL:尝试转换等效/解决方法

Oracle SQL:尝试转换等效/解决方法,sql,oracle,Sql,Oracle,我正在处理一个特别糟糕的数据集,其中日期存储为自由文本的一部分 我正在使用to_date(regexp_substr(dateformat))查找所有我能找到的日期。我不希望抓住所有的,但尽可能多的是好的 然而,有时我的正则表达式似乎会拾取识别的日期格式之外的日期,我会得到错误:“日期格式图片在转换整个输入字符串之前结束” 我想在SQL Server中使用类似try_convert的方法来解决这个问题,只需跳过出现问题的日期 关于如何最好地进行这项工作,你有什么想法吗 PS 使用Oracle S

我正在处理一个特别糟糕的数据集,其中日期存储为自由文本的一部分

我正在使用to_date(regexp_substr(dateformat))查找所有我能找到的日期。我不希望抓住所有的,但尽可能多的是好的

然而,有时我的正则表达式似乎会拾取识别的日期格式之外的日期,我会得到错误:“日期格式图片在转换整个输入字符串之前结束”

我想在SQL Server中使用类似try_convert的方法来解决这个问题,只需跳过出现问题的日期

关于如何最好地进行这项工作,你有什么想法吗

PS
使用Oracle SQl Developer 3.0.1(很遗憾,没有机会更新此版本…

您可以使用以下函数:

CREATE OR REPLACE FUNCTION to_date_safe(is_val IN VARCHAR2, is_fm IN VARCHAR2)
    RETURN DATE 
IS
    ld_result DATE;
BEGIN
    RETURN to_date(is_val, is_fm);
EXCEPTION
    WHEN OTHERS
    THEN
        RETURN NULL;
END;
/

您可以使用如下函数:

CREATE OR REPLACE FUNCTION to_date_safe(is_val IN VARCHAR2, is_fm IN VARCHAR2)
    RETURN DATE 
IS
    ld_result DATE;
BEGIN
    RETURN to_date(is_val, is_fm);
EXCEPTION
    WHEN OTHERS
    THEN
        RETURN NULL;
END;
/

您可以在这个答案中使用自定义函数,比如try\u convert什么是您的数据库版本<代码>从v$版本中选择*这是否回答了您的问题?顺便说一句,您使用的SQL Dev版本与此完全无关。处理SQL的是数据库,而不是SQL开发人员或任何其他客户机程序。您可以在此回答中使用自定义函数,如try_convert数据库版本是什么<代码>从v$版本中选择*这是否回答了您的问题?顺便说一句,您使用的SQL Dev版本与此完全无关。处理SQL的是数据库,而不是SQL开发人员或任何其他客户机程序。