sql - 在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' .. 我该怎么做?
解决方案
如果要匹配 csv 字符串,可以使用like
:
where ',' || :result || ',' like ',%' || id || ',%'
或正则表达式:
where regexp_like(result, '^|,' || id || ',|$')
但总的来说,最好传递与要匹配的值一样多的参数。这将比使用字符串或正则表达式函数更有效。