sql >> Databáze >  >> RDS >> Oracle

Dotaz s parametry IN oddělenými čárkami v 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);

LIKE operátor by ve výše uvedeném dotazu selhal. Musíte použít IN , který by byl interně vyhodnocen jako vícenásobné NEBO .

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

Také ohledně různý seznam IN , podívejte se na mou odpověď zde .

Aktualizovat

Na základě komentářů OP.

Upravte dotaz 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. Uživatelský referenční systém využívající PHP a MySQL

  2. Kdy přidat jaké indexy do tabulky v Rails

  3. Nesprávná syntaxe poblíž ')' volání uložené procedury s GETDATE

  4. Jak úplně odstranit MySQL z Ubuntu