Oracle
 sql >> Base de données >  >> RDS >> Oracle

Valider la date dans Oracle sans utiliser la fonction

Vous pouvez tester le format à l'aide d'une expression régulière.

Ce serait quelque chose comme :

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

Cela fonctionne bien. Il vérifie que le format est en « nombre à 4 chiffres / nombre à 2 chiffres / nombre à 2 chiffres ». Vous voudrez peut-être quelque chose de plus fort, comme :

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'
      )

Cela vérifie le format et les valeurs raisonnables dans chaque colonne. Bien sûr, il ne vérifie pas le 31 juin, mais il détectera de nombreuses erreurs.