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

Nhà tiên tri. Chọn tất cả nếu tham số là null nếu không trả về vấn đề mặt hàng cụ thể

Chỉ cần sử dụng coalesce . Đây là cách dễ đọc và dễ hiểu nhất để viết điều này. Vì logic được chứa trong một vị từ, nên việc duy trì và loại bỏ dễ dàng hơn:

select * from job where id = coalesce(:i, id)

Theo yêu cầu, một 'bằng chứng' này thực sự sử dụng chỉ mục:

create table x ( id number(15) null );

create unique index x_pk on x( id );

select id
from   x
where  id = coalesce(:x, id)
; -- Uses index

select id
from   x
where  id = :x or :x is null
; -- Full table scan

Kế hoạch:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BadImageFormatException. Điều này sẽ xảy ra khi chạy ở chế độ 64 bit với các thành phần máy khách Oracle 32 bit được cài đặt

  2. Tổng hợp các hàng trong câu lệnh SQL Oracle

  3. Làm thế nào chúng ta có thể phát hiện ra rằng một cột trong bảng oracle của tôi đang được điền / cập nhật bởi một trình kích hoạt của một bảng khác?

  4. Lỗi so sánh PL / SQL trong trình kích hoạt (PLS-00405)

  5. Làm cách nào để tăng tốc độ row_number trong Oracle?