sql >> Database >  >> RDS >> Oracle

Hoe alleen die records formatteren waarvoor ORA-01843 niet wordt gegenereerd?

Gebruik een CASE expressie die de status van de kolom controleert en alleen voorwaardelijk probeert te ontleden als een geldige datum:

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

Maar als algemene opmerking moet u voorkomen dat u datuminformatie in uw tabellen als tekst opslaat. Je ziet nu een van de redenen om dit te vermijden.




  1. Databasetabelnamen met Django

  2. Welk type tijdstempel moet ik kiezen in een PostgreSQL-database?

  3. Oracle - Hoe script van sql-ontwikkelaar te genereren

  4. MySQL DROP DATABASE Privilege?