sql >> Databáze >  >> RDS >> Oracle

Jak naformátovat pouze ty záznamy, u kterých se nevyhodí ORA-01843?

Použijte CASE výraz, který kontroluje stav sloupce a pouze podmíněně se pokouší analyzovat jako platné 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

Ale jako obecný komentář byste se měli vyhnout ukládání informací o datu v tabulkách jako text. Nyní vidíte jeden z důvodů, proč se tomu vyhnout.




  1. Vyberte si z několika oddílů najednou

  2. Jak efektivně vložit data souboru CSV do MYSQL pomocí Pythonu?

  3. Jak mohu naplnit číslované řádky tabulky HTML na základě toho, zda odpovídají číslu řádku?

  4. SQL aritmetické operátory