Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara memasukkan ikatan untuk parameter multi-nilai di SQL Developer

Ini bukan batasan Pengembang SQL, ini hanya cara kerja variabel ikat. Anda secara efektif melakukan:

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

... yang sebenarnya in (to_number('1,2,3')) , maka kesalahan. Ini akan berfungsi untuk satu nilai, memberikan hasil ganjil untuk dua nilai jika pemisah desimal Anda adalah koma, dan gagal untuk yang lainnya.

Anda tidak dapat memasukkan beberapa nilai pada prompt pengikatan, atau memberikan beberapa nilai ke in() dengan satu ikatan. Anda dapat menipu menjadi sedikit inventif sekalipun. xmltable fungsi akan mengubah string yang dipisahkan koma menjadi baris dengan satu nilai di setiap baris:

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

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

Anda kemudian dapat menggunakannya sebagai tabel pencarian:

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. apa itu max (rowid) di oracle

  2. Gabung Kiri dan Kanan Menggunakan Tanda Plus (+) di Oracle

  3. Mengonfigurasi Integrasi Data Pentaho untuk menggunakan Oracle Wallet untuk Oracle Cloud

  4. Bagaimana cara Memilih substring di Oracle SQL hingga karakter tertentu?

  5. Kueri hierarkis