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

Kueri dengan parameter IN yang dipisahkan koma di PLSQL

SELECT * FROM Table1 WHERE   
Table1.PRODUCT LIKE ( select regexp_substr(I_PRODUCT,'[^,]+', 1, level) from dual
                     connect by regexp_substr(I_PRODUCT, '[^,]+', 1, level) is not null);

SUKA operator akan gagal dalam permintaan di atas. Anda perlu menggunakan IN , yang secara internal akan dievaluasi sebagai beberapa ATAU .

Table1.PRODUCT IN ( select regexp_substr(I_PRODUCT,'[^,]+', 1, level) from dual
                     connect by regexp_substr(I_PRODUCT, '[^,]+', 1, level) is not null);

Juga, mengenai daftar IN yang bervariasi , lihat jawaban saya di sini .

Perbarui

Berdasarkan komentar OP.

Ubah kueri sebagai:

WITH str_search AS
(
     select regexp_substr(I_PRODUCT,'[^,]+', 1, level) pattern from dual
     connect by regexp_substr(I_PRODUCT, '[^,]+', 1, level) is not null
)
SELECT   *
FROM     Table1
WHERE     EXISTS (
          SELECT     NULL
          FROM     str_search
          WHERE     tab.col     LIKE pattern
                 );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Peningkatan otomatis di Oracle tanpa menggunakan pemicu

  2. Pengembang SQL untuk mengimpor dari Excel

  3. Tampilkan Semua Instance yang Harus Didaftarkan Secara Dinamis Dengan Pendengar

  4. Oracle 11g - SQL untuk Menghitung perbedaan waktu antara beberapa baris

  5. cara mendapatkan laporan ke-3 untuk menggabungkan data pelanggan dan pesanan