Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak sformatować tylko te rekordy, dla których nie wrzucono ORA-01843?

Użyj CASE wyrażenie, które sprawdza stan kolumny i tylko warunkowo próbuje przeanalizować jako poprawną datę:

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 ogólny komentarz, powinieneś unikać przechowywania informacji o datach w tabelach w postaci tekstu. Widzisz teraz jeden z powodów, aby tego uniknąć.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak skonfigurować ciąg połączenia dla ciągu połączenia ODP.NET z funkcją FailOver?

  2. ScaleGrid dodaje Oracle Cloud do hostingu zarządzanej bazy danych

  3. Konwersja różnicy czasu do danego formatu w Oracle

  4. Zapytanie zwracające :ORA-01427 Jednowierszowe podzapytanie zwracające więcej niż jeden wiersz

  5. Jak uruchomić funkcje dbms_crypto w Oracle jako zwykły użytkownik?