sql >> Database >  >> RDS >> Oracle

Query met door komma's gescheiden IN-parameters in 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);

De LIKE operator zou mislukken in bovenstaande query. U moet IN . gebruiken , die intern zou worden geëvalueerd als meervoudig OF .

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

Ook met betrekking tot variërende IN-lijst , bekijk mijn antwoord hier .

Bijwerken

Gebaseerd op de opmerkingen van OP.

Wijzig de zoekopdracht als:

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. SQL-geneste subquery die verwijst naar de grootouderskolom

  2. Android sqlite db.query leidt naar CursorIndexOutOfBoundsException

  3. Hoe maak je een zip-map in plsql (Oracle)

  4. De versie van SQL Server die in gebruik is, ondersteunt het datatype datetime2 niet?