Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie werden nur die Datensätze formatiert, für die ORA-01843 nicht ausgelöst wird?

Verwenden Sie einen CASE Ausdruck, der den Status der Spalte überprüft und nur bedingt versucht, als gültiges Datum zu parsen:

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

Generell sollten Sie jedoch vermeiden, Datumsinformationen in Ihren Tabellen als Text zu speichern. Sie sehen jetzt einen der Gründe, dies zu vermeiden.