Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como formatar apenas os registros para os quais o ORA-01843 não é lançado?


Use um CASE expressão que verifica o estado da coluna e apenas condicionalmente tenta analisar como uma data válida:
SELECT
    MyColumn,
    CASE WHEN REGEXP_LIKE(MyColumn, '^\s*\d\d\d\d\d\d\s*$')
         THEN TO_CHAR(TO_DATE(TRIM(MyColumn), 'YYMMDD'), 'MM/DD/YYYY')
         ELSE MyColumn END AS new_col
FROM MyTable

Mas como um comentário geral, você deve evitar armazenar informações de data em suas tabelas como texto. Você está vendo agora uma das razões para evitar isso.