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

Cách nhập liên kết cho một tham số nhiều giá trị trong SQL Developer

Đây không phải là hạn chế của Nhà phát triển SQL mà chỉ là cách các biến liên kết hoạt động. Bạn đang làm một cách hiệu quả:

select count(*) from foo 
where foo.id in ('1,2,3')

... thực sự là in (to_number('1,2,3')) , do đó lỗi. Nó sẽ hoạt động với một giá trị duy nhất, cho kết quả lẻ cho hai giá trị nếu dấu phân tách thập phân của bạn là dấu phẩy và không thành công với bất kỳ giá trị nào khác.

Bạn không thể nhập nhiều giá trị tại dấu nhắc liên kết hoặc cung cấp nhiều giá trị cho một in() với một ràng buộc duy nhất. Bạn có thể gian lận hãy sáng tạo một chút. xmltable hàm sẽ chuyển đổi chuỗi được phân tách bằng dấu phẩy thành các hàng với một giá trị trong mỗi:

var ids varchar2(50);
exec :ids := '1,2,3';
select * from xmltable(:ids);

COLUMN_VALUE
------------
1            
2            
3            

Sau đó, bạn có thể sử dụng nó làm bảng tra cứu:

select count(*)
from xmltable(:ids) x
join foo f on f.id = to_number(x.column_value);

  COUNT(*)
----------
         3 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách cập nhật Oracle Clob bằng cách sử dụng JDBC

  2. Chuyển đổi Dấu thời gian Unix thành Giá trị ngày tháng trong Oracle

  3. PHP, Oracle và ODBC:Làm thế nào để kiểm tra xem tập kết quả có trống không?

  4. Chọn liên kết bên trong ... riêng biệt so với chọn ... trong đó id trong (...)

  5. Làm thế nào để in kết quả trong một dòng khác nhau bằng cách sử dụng truy vấn SQL?