这是我想要做的一个例子:
def famlist = selection.getUnique('Family_code')
... Where “””...
and testedWaferPass.family_code in $famlist
“””...
famlist是一个对象列表
'selection'将改变每次运行,因此列表总是在变化。
我想只返回我在SQL搜索中的列,其中的行在我创建的列表中找到。
我意识到它应该是这样的:in('foo','bar')
但无论我做什么,我的名单都不会那样。所以我必须把我的列表变成一个字符串?
('\${famlist.join("', '")}')
我尝试了以上,idk。不适合我。只是以为我会把它丢在那里。会喜欢一些建议。感谢。
答案 0 :(得分:0)
我愿意打赌,有一种Groovier方法可以实现这个,而不是如下所示 - 但这是有效的。这是我的示例脚本的重要部分。 nameList原始包含字符串名称。需要引用列表中的每个条目,然后从toString结果中串起[和]。我尝试传递作为准备好的语句,但为此你需要动态创建字符串?对于列表中的每个元素。这个快速入侵不使用准备好的声明。
def nameList = ['Reports', 'Customer', 'Associates']
def nameListString = nameList.collect{"'${it}'"}.toString().substring(1)
nameListString = nameListString.substring(0, nameListString.length()-1)
String stmt = "select * from action_group_i18n where name in ( $nameListString)"
db.eachRow( stmt ) { row ->
println "$row.action_group_id, $row.language, $row.name"
}
希望这有帮助!