我有问题。我使用IN子句在查询中传递参数,但是它给了我错误,因为它不是将它视为两个不同的值而是将它视为单个值,所以我如何在sql级别处理它?</ p>
从表中选择*,其中名称为('abc','xyz');这样可以正常工作。
而不是将其视为
从表中选择*,其中名称为('abc,xyz');这会给出错误
我的参数值如下 基本上我正在检查条件过滤。为什么写这个逻辑,如果有值,那么在where子句中考虑这个参数,否则忽略它。
'$ {thera}'&lt;&gt;的情况'''' 然后 (ccp.name in('$ {thera}'))ELSE 1 = 1 END
注意:为避免条件过滤,任何更好的方法是他们的,请建议到。
答案 0 :(得分:0)
您确实可以将值列表作为参数传递。但您需要使用自定义参数组件。
对于您的示例,您可以创建名为parThera
的自定义参数,然后对于初始值,您可以像在javascript中一样使用表达式:
['abc','xyz']
另一种选择是使用函数表达式,如:
function (){
return "A list of words".split(" ");
}
然后,在SQL查询中,添加此参数,使用thera
作为参数名称,并将参数parThera
作为值。
现在您可以像在第一个示例中一样在SQL中使用它:
SELECT * FROM TABLE WHERE name IN (${thera})
该参数将扩展为'abc','xyz'
,从而使其可在IN (...)
子句中使用。
注意:在SQL参数设置中,您需要指定此参数的类型为 StringArray 。否则它将无法正确扩展。