Oracle
 sql >> Database >  >> RDS >> Oracle

Come formattare solo quei record per i quali non viene generato ORA-01843?

Usa un CASE espressione che controlla lo stato della colonna e tenta solo condizionatamente di analizzare come una data valida:

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

Ma come commento generale, dovresti evitare di memorizzare le informazioni sulla data nelle tabelle come testo. Ora stai vedendo uno dei motivi per evitarlo.