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

Valider dato i Oracle uden brug af funktion

Du kan teste formatet ved hjælp af et regulært udtryk.

Det ville være noget i stil med:

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

Det her fungerer okay. Den kontrollerer, at formatet er i "4-cifret nummer / 2-cifret nummer / 2-cifret nummer". Du vil måske have noget stærkere, såsom:

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

Dette kontrollerer formatet og for rimelige værdier i hver kolonne. Den tjekker selvfølgelig ikke den 31. juni, men den vil fange mange fejl.



  1. Har problemer med at matche rækker i databasen ved hjælp af PDO

  2. SQL-forespørgsel ved hjælp af IN med en liste meget langsom

  3. Udvikling af et modul med Java 9 i Eclipse IDE, del 2

  4. MySQL swap primære nøgleværdier