Добавить строку в параметре без запятых в Oracle PlSql

Я пытаюсь заменить значения переменной строкой строки, но мне нужно разделить эти строки запятой.

Это мой запрос:

SELECT * FROM RUOLI WHERE 1=1 AND ID IN ('RuoloASL1','Prova') ORDER BY DESCRIZIONE

и это работает хорошо, но если я хочу передать эти значения через такой параметр, как этот

SELECT * FROM RUOLI WHERE 1=1 AND ID IN (:RESULT) ORDER BY DESCRIZIONE

это не работает, потому что в RESULT замените это 'RuoloASL1, Prova'.

Мне нужно получить 'RuoloASL1', 'Prova' с одним параметром .. как я могу это сделать?

Всего 1 ответ


Если вы хотите сопоставить строку csv, вы можете использовать like :

where ',' || :result || ',' like ',%' || id  || ',%'

Или регулярное выражение:

where regexp_like(result, '^|,' || id || ',|$')

Но в целом было бы лучше передать столько параметров, сколько есть значений для сопоставления. Это будет намного эффективнее, чем использование строк или функций регулярных выражений.


Есть идеи?

10000