首页 > 解决方案 > 在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' .. 我该怎么做?

标签: sqloraclecsvplsqlparameters

解决方案


如果要匹配 csv 字符串,可以使用like

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

或正则表达式:

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

但总的来说,最好传递与要匹配的值一样多的参数。这将比使用字符串或正则表达式函数更有效。


推荐阅读