sql >> Database >  >> RDS >> Oracle

Datum valideren in Oracle zonder functie te gebruiken

U kunt de opmaak testen met een reguliere expressie.

Het zou zoiets zijn als:

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

Dit werkt oké. Het controleert of het formaat in "4-cijferig nummer / 2-cijferig nummer / 2-cijferig nummer" is. Misschien wilt u iets sterkers, zoals:

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

Dit controleert het formaat en voor redelijke waarden in elke kolom. Natuurlijk controleert het niet op 31 juni, maar het zal veel fouten opvangen.



  1. Verschil tussen lokale en globale tijdelijke tabellen in SQL Server

  2. Bestel voor de laatste 3 tekens

  3. Converteer een reeks Getalwaarden in Tekst in Oracle SQL Query

  4. Filter de rijen met alleen nummergegevens in een kolom SQL