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

Oracle:Nhận một truy vấn để luôn trả về chính xác một hàng, ngay cả khi không tìm thấy dữ liệu nào

Có nhiều cách để làm cho việc này trở nên đơn giản và gọn gàng hơn, nhưng về cơ bản điều này nói lên kỹ thuật:

SELECT data_name
FROM data_table
WHERE data_table.type = v_t_id

UNION ALL

SELECT NULL AS data_name
FROM dual
WHERE NOT EXISTS (
    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id
)

Khi phần đầu tiên của liên hợp trống, phần thứ hai sẽ chứa một hàng, khi phần đầu tiên không trống, phần thứ hai sẽ không chứa hàng.

Nếu truy vấn mất nhiều thời gian, hãy sử dụng truy vấn này:

SELECT * FROM (  
    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id

    UNION ALL

    SELECT NULL AS data_name
    FROM dual
  ) WHERE data_name is not null or ROWNUM = 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ma trận các phiên bản được hỗ trợ của Oracle

  2. SQL Server 2016 trên Linux

  3. Thay thế của máy chủ sql TOP trong oracle

  4. Kết nối Oracle bằng ODP.NET với Thư viện Doanh nghiệp DAAB

  5. Oracle Thêm 1 giờ trong SQL