sql >> Databasteknik >  >> RDS >> Oracle

Hur formaterar man bara de poster för vilka ORA-01843 inte kastas?

Använd en CASE uttryck som kontrollerar tillståndet för kolumnen och endast villkorligt försöker analysera som ett giltigt 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

Men som en allmän kommentar bör du undvika att lagra datuminformation i dina tabeller som text. Du ser nu en av anledningarna till att undvika detta.




  1. Felaktigt heltalsvärde:'' för kolumn 'id' på rad 1

  2. Sök åldersintervall i mysql, php

  3. Spara byte[] i en SQL Server-databas från C#

  4. Subtrahera en rad med data från en annan i SQL