Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Xác thực ngày trong Oracle mà không cần sử dụng hàm

Bạn có thể kiểm tra định dạng bằng biểu thức chính quy.

Nó sẽ giống như:

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

Điều này hoạt động ổn. Nó kiểm tra định dạng là "số 4 chữ số / số 2 chữ số / số 2 chữ số". Bạn có thể muốn thứ gì đó mạnh mẽ hơn, chẳng hạn như:

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

Điều này kiểm tra định dạng và các giá trị hợp lý trong mỗi cột. Tất nhiên, nó không kiểm tra cho ngày 31 tháng 6, nhưng nó sẽ bắt nhiều lỗi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xác định vị trí của tệp tnsnames.ora có liên quan

  2. Cách sử dụng các biến trong mệnh đề where trong Oracle PL / SQL

  3. Cột chỉnh sửa TableView JAVA FX

  4. Cách chạy Opatch ở dạng không tương tác

  5. ORA-00979:không phải là biểu thức GROUP BY khi tôi thực thi sql của mình