Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapytanie z parametrami IN oddzielonymi przecinkami w 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);

LUBIĘ operator nie powiedzie się w powyższym zapytaniu. Musisz użyć IN , co wewnętrznie zostanie ocenione jako wiele LUB .

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

Również w odniesieniu do lista różnych IN , spójrz na moją odpowiedź tutaj .

Aktualizacja

Na podstawie komentarzy OP.

Zmodyfikuj zapytanie jako:

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. Dokumentacja MAA dla Oracle Cloud

  2. Używasz sqlalchemy dburi z Oracle przy użyciu zewnętrznego magazynu haseł?

  3. Wyrażenie wielkości liter nie działa poprawnie w zapytaniu sql

  4. Procedura zdefiniowana przez użytkownika z DBMS_STATS, część II

  5. Używanie zapytania SQL do określenia, czy tabela istnieje