Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Sprawdź poprawność daty w Oracle bez użycia funkcji

Możesz przetestować format za pomocą wyrażenia regularnego.

Byłoby to coś takiego:

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

To działa dobrze. Sprawdza, czy format to „numer 4-cyfrowy / numer 2-cyfrowy / numer 2-cyfrowy”. Możesz chcieć czegoś mocniejszego, takiego jak:

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

To sprawdza format i rozsądne wartości w każdej kolumnie. Oczywiście nie sprawdza stanu na 31 czerwca, ale wykryje wiele błędów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwracana wartość oci_parse

  2. Problem z kodowaniem odpowiedzi na żądanie Oracle PL/SQL HTTP

  3. Problem z wyrażeniem regularnym Oracle

  4. Czy Oracle ma koncepcję filtrowanego indeksu?

  5. Wstawianie tablicy byte[] jako obiektu BLOB w bazie danych Oracle Pobieranie ORA-01460:zażądano niewdrożonej lub nieuzasadnionej konwersji