sql >> Databasteknik >  >> RDS >> Oracle

kommaseparerad parameter i lagrad plsql-procedur

Jag är rädd att det inte fungerar så här:

SELECT * from myTable where name in (inputStr);

Du kan använda dynamisk SQL, som i @Bob Jarvis svar, eller så kan du göra följande:

SELECT * FROM myTable WHERE REGEXP_LIKE(name, '^(' || REPLACE(inputStr, ',', '|') || ')$');

Svårigheten med det senare är att i Oracle kan ett reguljärt uttryck vara högst 512 byte långt. Så din inputStr skulle begränsas till 508 byte (eftersom vi lägger till fyra byte för ankarna och grupperingen).



  1. Ställa in fråga för specifikt fält för Hibernate-enhet

  2. Designa en Microsoft T-SQL Trigger

  3. Korrekt indexering av Join-Where-Group Genom att välja frågor undviker du att använda temporär; Använder filsortering

  4. Många-till-många-relationer i MySQL