sql >> Databasteknik >  >> RDS >> Oracle

Validera datum i Oracle utan att använda funktion

Du kan testa formatet med ett reguljärt uttryck.

Det skulle vara något i stil med:

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

Det här fungerar okej. Den kontrollerar att formatet är i "4-siffrigt nummer / 2-siffrigt nummer / 2-siffrigt nummer". Du kanske vill ha något starkare, till exempel:

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

Detta kontrollerar formatet och för rimliga värden i varje kolumn. Naturligtvis kontrolleras det inte för 31 juni, men det kommer att fånga många fel.



  1. MySQL och HBase Connectivity

  2. Noll uppgraderingar av driftstopp på ett enkelt sätt med ClusterControl

  3. Orsakas av:android.database.sqlite.SQLiteException:ingen sådan tabell:BOOK (kod 1 SQLITE_ERROR)

  4. Gratis ES för 11.2.0.4 och 12.2 Releasedatum