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

Hvordan formaterer man kun de poster, for hvilke ORA-01843 ikke er smidt?

Brug en CASE udtryk, som kontrollerer kolonnens tilstand og kun betinget forsøger at parse som en gyldig dato:

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

Men som en generel kommentar bør du undgå at gemme datooplysninger i dine tabeller som tekst. Du ser nu en af ​​grundene til at undgå dette.




  1. Python3 mysqlclient-1.3.6 (alias PyMySQL) brug?

  2. Oracle Dynamic SQL-eksempel til at indsætte en post ved hjælp af DBMS_SQL

  3. Er det en obligatorisk parameter recover_target_timeline='seneste' ved overgang og tilbageskiftning i PostgreSQL 9.4.1?

  4. Oracle Database Regex til gentagende gruppe af tegn