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

Convalida la data in Oracle senza utilizzare la funzione

Puoi testare il formato usando un'espressione regolare.

Sarebbe qualcosa del tipo:

select dates
from tbl
where regexp_like(dates, '[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}')

Funziona bene. Verifica che il formato sia in "numero a 4 cifre / numero a 2 cifre / numero a 2 cifre". Potresti volere qualcosa di più forte, come:

select dates
from tbl
where regexp_like(dates, '[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}') or
      (substr(dates, 1, 4) not between '1900' and '2014' or
       substr(dates, 6, 2) not between '01' and '12' 
       substr(dates, 9, 2) not between '01' and '31'
      )

Questo controlla il formato e i valori ragionevoli in ogni colonna. Ovviamente non verifica il 31 giugno, ma rileva molti errori.