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

Sử dụng như '%' và so khớp các giá trị NULL với NUMBER cột

Điều đó có vẻ như bạn đang tự làm khó mình. Để trống, sau đó thực hiện:

where (param1 is null or t.col1 like param1)
and (param2 is null or t.col2 like param2)

Nếu param1 (đối số thủ tục; cuộc sống đơn giản hơn khi tên tham số / biến và tên cột của bạn khác nhau ... vì vậy tôi đã thay đổi tên cột để làm cho nó rõ ràng hơn một chút) là null về cơ bản nó bị bỏ qua * và tất cả các hàng đều vượt qua phần đó của bộ lọc, cho dù giá trị cột là null hay không null. Nếu param2 không null thì is null kiểm tra xem không thành công và chỉ các hàng có giá trị cột (not-null) khớp với param2 giá trị đáp ứng phần đó của bộ lọc.

* Các điều kiện trong or có thể được đánh giá theo bất kỳ thứ tự nào; đặt is null kiểm tra trước không nhất thiết có nghĩa là like sẽ không được đánh giá - nhưng trình tối ưu hóa khá thông minh về điều đó



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (+) Làm gì trong Oracle SQL?

  2. Không thể tạo kết nối mới là sqldeveloepr

  3. FNDCPASS &AFPASSWD

  4. Lỗi cú pháp khi cố gắng chèn nhiều hàng trong SQL?

  5. Tìm kiếm văn bản Oracle trên nhiều bảng và kết hợp