Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment formater uniquement les enregistrements pour lesquels ORA-01843 n'est pas lancé ?

Utiliser un CASE expression qui vérifie l'état de la colonne et n'essaie que conditionnellement d'analyser comme une date valide :

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

Mais en règle générale, vous devez éviter de stocker les informations de date dans vos tables sous forme de texte. Vous voyez maintenant l'une des raisons pour éviter cela.